From 954eaed548efb75b3dc79343587acb79e53d214d Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 23 八月 2024 17:19:59 +0800
Subject: [PATCH] 优化写卡逻辑,再次读取内容确认写卡成功再提示成功

---
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java |  199 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 169 insertions(+), 30 deletions(-)

diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java
index 7165c03..a620a8d 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/NewCardActivity.java
@@ -2,30 +2,46 @@
 
 import android.content.Intent;
 import android.os.Bundle;
+import android.text.Editable;
 import android.text.InputFilter;
 import android.text.Spanned;
 import android.text.TextUtils;
+import android.text.TextWatcher;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.widget.EditText;
 
 import androidx.annotation.NonNull;
 
 import com.dayu.baselibrary.tools.Utils;
+import com.dayu.baselibrary.utils.DeviceUtils;
 import com.dayu.baselibrary.utils.TipUtil;
 import com.dayu.baselibrary.utils.ToastUtil;
 
+import com.dayu.qiheonlinelibrary.QHOnLineApplication;
+import com.dayu.qiheonlinelibrary.bean.AddUserResult;
+import com.dayu.qiheonlinelibrary.bean.PricePlanResult;
+import com.dayu.qiheonlinelibrary.bean.UserListResult;
 import com.dayu.qiheonlinelibrary.card.UserCard;
 import com.dayu.qiheonlinelibrary.databinding.ActivityNewCardQhlBinding;
 import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
 import com.dayu.qiheonlinelibrary.dbBean.UserCardBean;
+import com.dayu.qiheonlinelibrary.net.ApiManager;
+import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.RSAUtile;
+import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
 import com.hjq.permissions.OnPermissionCallback;
 import com.hjq.permissions.Permission;
 import com.hjq.permissions.XXPermissions;
 import com.kernal.passportreader.sdk.CardsCameraActivity;
 import com.kernal.passportreader.sdk.utils.DefaultPicSavePath;
 
+import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -42,10 +58,8 @@
 public class NewCardActivity extends BaseActivity {
 
     public static final int SCAN_IDCARD_REQUEST = 1;
-    UserCardBean userCardBean;
 
     ActivityNewCardQhlBinding newCardBinding;
-    AdminDataBean adminData;
 
     static NewCardActivity newCardActivity;
     private int defValueMainId = 2;
@@ -63,7 +77,8 @@
     }
 
     private void initView() {
-        newCardBinding.newCardName.setFilters(new InputFilter[]{new ChineseInputFilter()});
+        setPricePoint(newCardBinding.newCardMorny);
+//        newCardBinding.newCardName.setFilters(new InputFilter[]{new ChineseInputFilter()});
         newCardBinding.newCardId.setFilters(new InputFilter[]{new AlphaNumericXFilter(), new InputFilter.LengthFilter(18)});
         //韬唤璇佽瘑鍒�
         newCardBinding.newCardScanBtn.setOnClickListener(new View.OnClickListener() {
@@ -76,43 +91,21 @@
         newCardBinding.newCardRegistBtn.setOnClickListener(v -> {
 
             String userName = newCardBinding.newCardName.getText().toString();
-            long date = System.currentTimeMillis();
             String phone = newCardBinding.newCardPhone.getText().toString();
             String userID = newCardBinding.newCardId.getText().toString().toUpperCase();
-
+            String morny = newCardBinding.newCardMorny.getText().toString();
 
             if (!TextUtils.isEmpty(userName)
                     && !TextUtils.isEmpty(phone) && !TextUtils.isEmpty(userID)
             ) {
-                if (userName.length() <= 1 || !validateName(userName)) {
+                if (userName.length() <= 1) {
                     TipUtil.show(NewCardActivity.this, "璇疯緭鍏ユ纭鍚�");
                 } else if (phone.length() < 11 || !isValidPhoneNumber(phone)) {
                     TipUtil.show(NewCardActivity.this, "璇疯緭鍏ユ纭墜鏈哄彿");
                 } else if (!Utils.check(userID)) {
                     TipUtil.show(NewCardActivity.this, "璇疯緭鍏ユ纭韩浠借瘉鍙�");
                 } else {
-                    userCardBean = new UserCardBean();
-                    userCardBean.setUserName(userName);
-                    userCardBean.setDate(date);
-                    userCardBean.setSerial(adminData.getSerial());
-                    userCardBean.setPhone(phone);
-                    userCardBean.setUserID(userID);
-
-
-                    UserCard userCard = new UserCard();
-                    userCard.setArerNumber(Integer.valueOf(adminData.getSerial()));
-                    userCard.setDeviceNumberl(Integer.valueOf(adminData.getAddressCode()));
-                    userCard.setRechargeTimes((byte) 0);
-                    userCard.setTotalWater(0);
-                    userCard.setTotalElectric(0);
-                    userCard.setBalance(0);
-                    userCard.setSurplusWater(0);
-                    userCard.setRechargeDate(Calendar.getInstance());
-
-                    Intent intent = new Intent(NewCardActivity.this, NFCWreatActivity.class);
-                    intent.putExtra("userCard", userCard);
-                    intent.putExtra("dbUserCard", userCardBean);
-                    startActivity(intent);
+                    selectUser(userID, phone, userName, morny);
                 }
 
             } else {
@@ -121,6 +114,7 @@
         });
     }
 
+    //鏍¢獙鎵嬫満鍙�
     private boolean isValidPhoneNumber(String phoneNumber) {
         // 瀹氫箟鎵嬫満鍙风殑姝e垯琛ㄨ揪寮忥紝纭繚鏁板瓧閮ㄥ垎娌℃湁杩炵画6浣嶇浉鍚岀殑鏁板瓧
         String phoneRegex = "^1[0-9]{10}$";
@@ -248,8 +242,7 @@
     private void setData() {
 
         try {
-            adminData = baseDao.adminDao().findFirst();
-            newCardBinding.newCardVillageNum.setText(adminData.getSerial());
+            newCardBinding.newCardArerNumber.setText(QHOnLineApplication.getInstance().arerNumber);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -307,4 +300,150 @@
         newCardActivity = null;
     }
 
+
+    /**
+     * 鏌ヨ鐢ㄦ埛
+     *
+     * @param peasantIdNumber
+     * @param peasantPhone
+     * @param peasantName
+     * @param morny           寮�鍗¢噾棰�
+     */
+    private void selectUser(String peasantIdNumber, String peasantPhone, String peasantName, String morny) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("adcd", QHOnLineApplication.getInstance().adcd);
+        data.put("peasantIdNumber", peasantIdNumber);
+        data.put("current", 1);
+        data.put("pageSize", 10);
+        ApiManager.getInstance().requestPostLoading(this, "base/peasant/pagePeasantVo", UserListResult.class, data, new SubscriberListener<BaseResponse<UserListResult>>() {
+            @Override
+            public void onNext(BaseResponse<UserListResult> t) {
+                if (t.isSuccess()) {
+                    if (t.getData().getTotal() == 0) {
+                        if (!TextUtils.isEmpty(QHOnLineApplication.getInstance().planId)) {
+                            addUser(peasantIdNumber, peasantPhone, peasantName, QHOnLineApplication.getInstance().planId, morny);
+                        }
+                    } else {
+                        startNFCWreatActivity(peasantIdNumber, t.getData().getRecords().get(0).getPeasantPhone(), t.getData().getRecords().get(0).getPeasantName(), t.getData().getRecords().get(0).getPeasantId(), morny);
+                    }
+                } else {
+                    ToastUtil.show(t.getMsg());
+                }
+            }
+        });
+    }
+
+    private void startNFCWreatActivity(String peasantIdNumber, String peasantPhone, String peasantName, String peasanId, String morny) {
+        UserCard userCard = new UserCard();
+        userCard.setArerNumber(Integer.valueOf(QHOnLineApplication.getInstance().arerNumber));
+        userCard.setUserCode(QHOnLineApplication.getInstance().adcd);
+        userCard.setCardWriteState(0);
+        userCard.setCardState(1);
+        userCard.setBalance(0);
+        userCard.setSurplusElecticity(0);
+        userCard.setTotalMorny(0);
+        userCard.setRechargeDate(Calendar.getInstance());
+        userCard.setElectricPrice(Float.valueOf(QHOnLineApplication.getInstance().electriclePriceStr));
+        UserCardBean userCardBean = new UserCardBean();
+
+        userCardBean.setUserName(peasantName);
+        userCardBean.setUserID(peasantIdNumber);
+        userCardBean.setPhone(peasantPhone);
+        userCardBean.setPersonId(peasanId);
+        if (!TextUtils.isEmpty(morny)) {
+            userCardBean.setCardMorny(Integer.valueOf(morny));
+        } else {
+            userCardBean.setCardMorny(0);
+        }
+        userCardBean.setAddressCode(QHOnLineApplication.getInstance().adcd);
+        userCardBean.setAddressName(QHOnLineApplication.getInstance().addressName);
+        userCardBean.setArerNumber(QHOnLineApplication.getInstance().arerNumber);
+        userCardBean.setDate(System.currentTimeMillis());
+        userCardBean.setSerial(DeviceUtils.getSN());
+
+        Intent intent = new Intent(NewCardActivity.this, NFCWreatActivity.class);
+        intent.putExtra("userCard", userCard);
+        intent.putExtra("dbUserCard", userCardBean);
+        startActivity(intent);
+    }
+
+    /**
+     * 娣诲姞鐢ㄦ埛
+     *
+     * @param peasantIdNumber
+     * @param peasantPhone
+     * @param peasantName
+     * @param planId          浠锋牸ID
+     */
+    private void addUser(String peasantIdNumber, String peasantPhone, String peasantName, String planId, String morny) {
+        Map<String, Object> data = new HashMap<>();
+        data.put("planId", planId);
+        data.put("adcd", QHOnLineApplication.getInstance().adcd);
+        data.put("peasantIdNumber", peasantIdNumber);
+        data.put("peasantCode", "");
+        data.put("peasantName", peasantName);
+        data.put("peasantPhone", peasantPhone);
+        ApiManager.getInstance().requestPostLoading(this, "base/peasant/savePeasant", AddUserResult.class, data, new SubscriberListener<BaseResponse<AddUserResult>>() {
+            @Override
+            public void onNext(BaseResponse<AddUserResult> t) {
+                if (t.isSuccess()) {
+                    startNFCWreatActivity(peasantIdNumber, t.getData().getPeasantPhone(), t.getData().getPeasantName(), t.getData().getPeasantId(), morny);
+                } else {
+                    ToastUtil.show(t.getMsg());
+                }
+            }
+        });
+    }
+
+    //鏍¢獙閲戦
+    public void setPricePoint(final EditText editText) {
+        editText.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before,
+                                      int count) {
+                if (s.toString().contains(".")) {
+                    if (s.length() - 1 - s.toString().indexOf(".") > 2) {
+                        s = s.toString().subSequence(0,
+                                s.toString().indexOf(".") + 3);
+                        editText.setText(s);
+                        editText.setSelection(s.length());
+                    }
+                }
+                if (s.toString().trim().substring(0).equals(".")) {
+                    s = "0" + s;
+                    editText.setText(s);
+                    editText.setSelection(2);
+                }
+
+                if (s.toString().startsWith("0")
+                        && s.toString().trim().length() > 1) {
+                    if (!s.toString().substring(1, 2).equals(".")) {
+                        editText.setText(s.subSequence(0, 1));
+                        editText.setSelection(1);
+                    }
+                }
+                String morny = editText.getText().toString();
+                if (!TextUtils.isEmpty(morny)) {
+//                    rechageWater = MornyUtil.intDiv(MornyUtil.changeY2F(editText.getText().toString()), waterPrice);
+//                    binding.redRechargeWater.setText("鍏呭�兼按閲忥細" + rechageWater + " 绔嬫柟绫�(鍚�)");
+                }
+
+
+            }
+
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count,
+                                          int after) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                // TODO Auto-generated method stub
+
+            }
+
+        });
+
+    }
 }

--
Gitblit v1.8.0