TakeCodeFragment.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package com.emato.ich.fragment;
  2. import android.os.Bundle;
  3. import android.text.Editable;
  4. import android.util.Log;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.TextView;
  9. import androidx.annotation.NonNull;
  10. import androidx.annotation.Nullable;
  11. import androidx.fragment.app.Fragment;
  12. import androidx.navigation.fragment.NavHostFragment;
  13. import com.emato.ich.MainActivity;
  14. import com.emato.ich.R;
  15. import com.emato.ich.api.ICSPClient;
  16. import com.emato.ich.api.ICSPResponseCodeEnum;
  17. import com.emato.ich.databinding.FragmentTakeCodeBinding;
  18. import com.emato.ich.device.DeviceControl;
  19. import com.emato.ich.entity.vo.ResponseData;
  20. import com.emato.ich.entity.vo.TakeParcelVo;
  21. import com.emato.ich.local.LocalStorage;
  22. import com.emato.ich.utils.BaseUtils;
  23. import com.fasterxml.jackson.core.JsonProcessingException;
  24. import com.fasterxml.jackson.core.type.TypeReference;
  25. import com.fasterxml.jackson.databind.ObjectMapper;
  26. import com.google.android.material.snackbar.Snackbar;
  27. import org.jetbrains.annotations.NotNull;
  28. import java.io.IOException;
  29. import java.util.Arrays;
  30. import okhttp3.Call;
  31. import okhttp3.Callback;
  32. import okhttp3.Response;
  33. /**
  34. * 取件码输入页面
  35. */
  36. public class TakeCodeFragment extends Fragment {
  37. private FragmentTakeCodeBinding binding;
  38. private static final String TAG = TakeCodeFragment.class.getName();
  39. @Nullable
  40. @org.jetbrains.annotations.Nullable
  41. @Override
  42. public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
  43. binding = FragmentTakeCodeBinding.inflate(inflater, container, false);
  44. return binding.getRoot();
  45. }
  46. public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
  47. super.onViewCreated(view, savedInstanceState);
  48. // 选中输入框
  49. // binding.editTextTextPersonName6.requestFocus();
  50. // 输入逻辑
  51. binding.editTextTextPersonName6.setOnFocusChangeListener((view1, hasFocus) -> {
  52. if (hasFocus) {
  53. binding.takeInputButton0.setOnClickListener(v -> {
  54. int start = binding.editTextTextPersonName6.getSelectionStart();
  55. binding.editTextTextPersonName6.getText().insert(start,"0");
  56. });
  57. binding.takeInputButton1.setOnClickListener(v -> {
  58. int start = binding.editTextTextPersonName6.getSelectionStart();
  59. binding.editTextTextPersonName6.getText().insert(start,"1");
  60. });
  61. binding.takeInputButton2.setOnClickListener(v -> {
  62. int start = binding.editTextTextPersonName6.getSelectionStart();
  63. binding.editTextTextPersonName6.getText().insert(start,"2");
  64. });
  65. binding.takeInputButton3.setOnClickListener(v -> {
  66. int start = binding.editTextTextPersonName6.getSelectionStart();
  67. binding.editTextTextPersonName6.getText().insert(start,"3");
  68. });
  69. binding.takeInputButton4.setOnClickListener(v -> {
  70. int start = binding.editTextTextPersonName6.getSelectionStart();
  71. binding.editTextTextPersonName6.getText().insert(start,"4");
  72. });
  73. binding.takeInputButton5.setOnClickListener(v -> {
  74. int start = binding.editTextTextPersonName6.getSelectionStart();
  75. binding.editTextTextPersonName6.getText().insert(start,"5");
  76. });
  77. binding.takeInputButton6.setOnClickListener(v -> {
  78. int start = binding.editTextTextPersonName6.getSelectionStart();
  79. binding.editTextTextPersonName6.getText().insert(start,"6");
  80. });
  81. binding.takeInputButton7.setOnClickListener(v -> {
  82. int start = binding.editTextTextPersonName6.getSelectionStart();
  83. binding.editTextTextPersonName6.getText().insert(start,"7");
  84. });
  85. binding.takeInputButton8.setOnClickListener(v -> {
  86. int start = binding.editTextTextPersonName6.getSelectionStart();
  87. binding.editTextTextPersonName6.getText().insert(start,"8");
  88. });
  89. binding.takeInputButton9.setOnClickListener(v -> {
  90. int start = binding.editTextTextPersonName6.getSelectionStart();
  91. binding.editTextTextPersonName6.getText().insert(start,"9");
  92. });
  93. binding.takeInputButtonCancel.setOnClickListener(v -> {
  94. Editable text = binding.editTextTextPersonName6.getText();
  95. if (text.length() > 0) {
  96. text.delete(text.length()-1, text.length());
  97. binding.editTextTextPersonName6.setText(text, TextView.BufferType.EDITABLE);
  98. binding.editTextTextPersonName6.setSelection(binding.editTextTextPersonName6.getText().length());
  99. }
  100. });
  101. }
  102. });
  103. binding.takeInputButtonConfirm.setOnClickListener(view1 -> {
  104. // TODO 取件逻辑
  105. String takeParcelCode = binding.editTextTextPersonName6.getText().toString();
  106. TakeParcelVo takeParcelVo = new TakeParcelVo();
  107. takeParcelVo.setClientId(BaseUtils.getClientId());
  108. takeParcelVo.setPickUp(takeParcelCode);
  109. takeParcelVo.setReopen("0");
  110. ICSPClient.takeParcel("", takeParcelVo, new Callback() {
  111. @Override
  112. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  113. // TODO 取件接口请求失败逻辑处理
  114. Snackbar.make(view, "取件失败!网络异常!", Snackbar.LENGTH_LONG).show();
  115. Log.e(TAG, "onFailure: 取件请求失败!", e);
  116. }
  117. @Override
  118. public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
  119. // TODO 返回锁板和锁id, 开柜门
  120. getActivity().runOnUiThread(() -> {
  121. String parseResponse = ICSPClient.isSuccessfulAndParseResponse(response);
  122. try {
  123. ObjectMapper objectMapper = new ObjectMapper();
  124. ResponseData responseData = null;
  125. try {
  126. responseData = objectMapper.readValue(parseResponse, new TypeReference<ResponseData>() {
  127. });
  128. ICSPResponseCodeEnum.responseHint(view1, responseData);
  129. } catch (JsonProcessingException e) {
  130. Log.e(TAG, "onResponse: 解析取件开门响应信息失败! ", e);
  131. } catch (RuntimeException e) {
  132. Log.e(TAG, "onResponse: 未知错误! ", e);
  133. Snackbar.make(view1, "未知错误!", Snackbar.LENGTH_LONG).show();
  134. }
  135. if (null != responseData && responseData.getCode().equals(ICSPResponseCodeEnum.OK.getCode())) {
  136. // 开门
  137. Log.i(TAG, "onResponse: 取件成功! ");
  138. Snackbar.make(view1, "取件成功!", Snackbar.LENGTH_LONG).show();
  139. Bundle bundle = new Bundle();
  140. bundle.putString("takeParcelCode", takeParcelCode);
  141. ((MainActivity) getActivity()).getBundleMap().put(TakeCodeFragment.class.getName(), bundle);
  142. NavHostFragment.findNavController(TakeCodeFragment.this).navigate(R.id.action_takeCodeFragment_to_takeSuccessFragment);
  143. }
  144. } catch (RuntimeException e) {
  145. Log.e(TAG, "onResponse: 取件失败! ", e);
  146. Snackbar.make(view1, "取件失败!", Snackbar.LENGTH_LONG).show();
  147. }
  148. });
  149. }
  150. });
  151. });
  152. binding.returnBtn.setOnClickListener(view1 -> NavHostFragment.findNavController(TakeCodeFragment.this)
  153. .navigate(R.id.action_takeCodeFragment_to_takeFragment));
  154. }
  155. @Override
  156. public void onDestroy() {
  157. super.onDestroy();
  158. binding = null;
  159. }
  160. }