From fc6048b630901058ccd90529e32e031e612b8384 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 21 十一月 2023 14:32:03 +0800
Subject: [PATCH] 补卡相关

---
 app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java |  256 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 221 insertions(+), 35 deletions(-)

diff --git a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
index e765ae1..5355d4f 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -9,13 +9,20 @@
 
 import com.dayu.recharge.MyApplication;
 
+import com.dayu.recharge.R;
 import com.dayu.recharge.card.CleanCard;
 import com.dayu.recharge.card.CleanUserCard;
+import com.dayu.recharge.card.ConfigurationPowerCard;
+import com.dayu.recharge.card.ConfigureDeviceRegistrationCrad;
+import com.dayu.recharge.card.DomainCard;
 import com.dayu.recharge.card.ManageCard;
 import com.dayu.recharge.card.RegisteredCard;
+import com.dayu.recharge.card.TestCard;
 import com.dayu.recharge.card.UserCard;
 import com.dayu.recharge.databinding.ActivityWriteTextBinding;
 import com.dayu.recharge.dbBean.AdminDataBean;
+import com.dayu.recharge.dbBean.DeviceNumber;
+import com.dayu.recharge.dbBean.ElectricPriceBean;
 import com.dayu.recharge.dbBean.RechargeBean;
 import com.dayu.recharge.dbBean.UserCardBean;
 import com.dayu.recharge.net.SocketCallBack;
@@ -30,6 +37,7 @@
 import com.dayu.recharge.utils.AidlUtil;
 import com.dayu.recharge.utils.CRC8;
 import com.dayu.recharge.utils.DateUtil;
+import com.dayu.recharge.utils.DeviceNumberUtils;
 import com.dayu.recharge.utils.MornyUtil;
 import com.dayu.recharge.utils.SocketUtil;
 import com.dayu.recharge.utils.ToastUtil;
@@ -41,6 +49,12 @@
 import java.util.List;
 import java.util.Map;
 
+/**
+ * Copyright (C), 2023,
+ * Author: zuo
+ * Date: 2023-11-08 21:19
+ * Description: nfc鍐欏崱鐣岄潰
+ */
 public class NFCWreatActivity extends BaseNfcActivity {
 
 
@@ -65,12 +79,18 @@
     boolean registeredFlag = false;
     boolean administrativeCardFlag = false;
     boolean cleanUserCardFlag = false;
-    volatile UserCard userCard;
 
-    ManageCard manageCard;
+    boolean domainCrdFlag = false;
+
+    boolean testCardFlag = false;
+
+    boolean configDeviceRegiestFlag = false;
+
+    boolean configPowerFlag = false;
+
     UserCardBean userCardBean;
 
-    CleanCard cleanCard;
+
     String morny;
     AdminDataBean adminData;
     RechargeBean rechargeBean;
@@ -79,7 +99,15 @@
 
     RegisteredCard registeredCard;
     CleanUserCard cleanUserCard;
+    volatile UserCard userCard;
+    ManageCard manageCard;
+    DomainCard domainCard;
 
+    CleanCard cleanCard;
+    ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad;
+    TestCard testCard;
+
+    ConfigurationPowerCard configurationPowerCard;
     //鎵撳嵃
     MyApplication baseApp;
 
@@ -115,20 +143,44 @@
             }
             if (this.getIntent().hasExtra("cleanCard")) {
                 cleanCard = (CleanCard) this.getIntent().getSerializableExtra("cleanCard");
+                binding.cardData.setText("鍒朵綔娓呴浂鍗�");
             }
             if (this.getIntent().hasExtra("manageCard")) {
                 manageCard = (ManageCard) this.getIntent().getSerializableExtra("manageCard");
+                binding.cardData.setText("鍒朵綔绠$悊鍗�");
             }
             if (this.getIntent().hasExtra("registeredCard")) {
                 registeredCard = (RegisteredCard) this.getIntent().getSerializableExtra("registeredCard");
+                binding.cardData.setText("鍒朵綔閲嶆柊娉ㄥ唽璁惧鍗�");
             }
             if (this.getIntent().hasExtra("dbUserCard")) {
                 userCardBean = (UserCardBean) this.getIntent().getSerializableExtra("dbUserCard");
             }
             if (this.getIntent().hasExtra("cleanUserCard")) {
                 cleanUserCard = (CleanUserCard) this.getIntent().getSerializableExtra("cleanUserCard");
+                binding.cardData.setText("鍒朵綔鍒犻櫎鍏ㄩ儴鐢ㄦ埛鍗�");
             }
-            morny = this.getIntent().getStringExtra("morny");
+            if (this.getIntent().hasExtra("domainCard")) {
+                domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard");
+                binding.cardData.setText("鍒朵綔璁剧疆鍩熷悕鍗�");
+            }
+            if (this.getIntent().hasExtra("testCard")) {
+                testCard = (TestCard) this.getIntent().getSerializableExtra("testCard");
+                binding.cardData.setText("鍒朵綔娴嬭瘯鍗�");
+            }
+            if (this.getIntent().hasExtra("configureDeviceRegistrationCrad")) {
+                configureDeviceRegistrationCrad = (ConfigureDeviceRegistrationCrad) this.getIntent().getSerializableExtra("configureDeviceRegistrationCrad");
+                binding.cardData.setText("鍒朵綔閰嶇疆璁惧娉ㄥ唽淇℃伅鍗�");
+            }
+            if (this.getIntent().hasExtra("configurationPowerCard")) {
+                configurationPowerCard = (ConfigurationPowerCard) this.getIntent().getSerializableExtra("configurationPowerCard");
+                binding.cardData.setText("鍒朵綔閰嶇疆姘存车鍔熺巼鍗�");
+            }
+            if (this.getIntent().hasExtra("morny")) {
+                morny = this.getIntent().getStringExtra("morny");
+                binding.cardData.setText("鍏呭�奸噾棰濓細" + morny + "鍏�");
+            }
+
             try {
                 adminData = baseDao.adminDao().findFirst();
             } catch (Exception e) {
@@ -166,9 +218,9 @@
                         }
 
                         @Override
-                        public void error() {
+                        public void error(int code) {
                             Message message = new Message();
-                            message.what = ERROR;
+                            message.what = code;
                             handler.sendMessage(message);
                         }
                     });
@@ -182,7 +234,11 @@
     private void saveData() {
         try {
             startAnim();
-            if (userCard != null || cleanCard != null || manageCard != null || registeredCard != null || cleanUserCard != null) {
+            if (userCard != null || cleanCard != null || manageCard != null
+                    || registeredCard != null || cleanUserCard != null
+                    || domainCard != null || testCard != null
+                    || configureDeviceRegistrationCrad != null
+                    || configurationPowerCard != null) {
                 if (userCard != null) {
                     setUser(intent, userCard);
                 }
@@ -198,11 +254,22 @@
                 if (cleanUserCard != null) {
                     setCleanUserCard(intent, cleanUserCard);
                 }
-
-                if ((userFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag)) {
+                if (domainCard != null) {
+                    setDomainCard(intent, domainCard);
+                }
+                if (testCard != null) {
+                    setTestCard(intent, testCard);
+                }
+                if (configureDeviceRegistrationCrad != null) {
+                    setConfigDeviceRegiest(intent, configureDeviceRegistrationCrad);
+                }
+                if (configurationPowerCard != null) {
+                    setConfigurationPower(intent, configurationPowerCard);
+                }
+                if ((configPowerFlag || configDeviceRegiestFlag || testCardFlag || domainCrdFlag || userFlag || cleanFlag || manageCardFlag || registeredFlag || administrativeCardFlag || cleanUserCardFlag)) {
                     try {
                         if (userFlag && userCardBean != null) {
-                            baseDao.userCardDao().insert(userCardBean);
+
                             ToastUtil.show(this, "娉ㄥ唽鎴愬姛");
                             NFCWreatActivity.this.finish();
                             if (NewCardActivity.newCardActivity != null) {
@@ -227,6 +294,9 @@
                 stopAnim();
             } else if (!TextUtils.isEmpty(morny)) {
                 readAllData(intent);
+            } else if (userCard == null && userCardBean != null) {
+                //琛ュ崱閫昏緫
+                selectBalance(userCardBean.getInitPeasantCode());
             } else {
                 stopAnim();
                 ToastUtil.show(this, "鍙傛暟閿欒");
@@ -276,7 +346,7 @@
                         }
 
                         @Override
-                        public void error() {
+                        public void error(int code) {
                             Message message = new Message();
                             message.what = ERROR;
                             handler.sendMessage(message);
@@ -323,7 +393,7 @@
             StringBuffer data = new StringBuffer();
             if (rechargeBean != null) {
                 data.append("*****************************" + "\n");
-                data.append("  鍐滀笟姘翠环缁煎悎鏀归潻鍏呭�肩郴缁焅n\n");
+                data.append(getResources().getString(R.string.login_title) + "\n");
                 data.append("璁惧搴忓垪鍙凤細" + rechargeBean.getSerial() + "\n");
                 data.append("鐢ㄦ埛鍚嶏細" + rechargeBean.getUserName() + "\n");
                 //            data.append("鎴�  鍙凤細" + rechargeBean.getUserNum() + "\n");
@@ -360,7 +430,7 @@
         try {
             RechargeRequestBean rechargeRequestBean = new RechargeRequestBean();
             rechargeRequestBean.setControl("01");
-            String initCode = WSHelper.getInstance(this).get("initCode", "");
+            String initCode = DeviceNumberUtils.getDeviceNumber();
             rechargeRequestBean.setInitCode(initCode);
             rechargeRequestBean.setXuLie(SocketUtil.getXuLie(this));
             rechargeRequestBean.setAFN("95");
@@ -456,12 +526,18 @@
                 userFlag = flag;
             }
         });
+        if (!userFlag) {
+            return;
+        }
         NFCWriteHelper.getInstence(intent).writeData(userCard.getOneBytes(), 1, 1, new NFCWriteHelper.NFCCallback() {
             @Override
             public void isSusses(boolean flag) {
                 userFlag = flag;
             }
         });
+        if (!userFlag) {
+            return;
+        }
         NFCWriteHelper.getInstence(intent).writeData(userCard.getTwoBytes(), 1, 2, new NFCWriteHelper.NFCCallback() {
             @Override
             public void isSusses(boolean flag) {
@@ -485,6 +561,12 @@
         });
     }
 
+    /**
+     * 鍒犻櫎鍏ㄩ儴鐢ㄦ埛鍗�
+     *
+     * @param intent
+     * @param cleanUserCard
+     */
     private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) {
         NFCWriteHelper.getInstence(intent).writeData(cleanUserCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
             @Override
@@ -495,6 +577,80 @@
     }
 
     /**
+     * 璁剧疆鍩熷悕鍗�
+     *
+     * @param intent
+     * @param domainCard
+     */
+    private void setDomainCard(Intent intent, DomainCard domainCard) {
+        try {
+            NFCWriteHelper.getInstence(intent).writeData(domainCard.getZeroByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
+                @Override
+                public void isSusses(boolean flag) {
+                    domainCrdFlag = flag;
+                }
+            });
+            if (!domainCrdFlag) {
+                return;
+            }
+            NFCWriteHelper.getInstence(intent).writeData(domainCard.getOneByte(), 1, 1, new NFCWriteHelper.NFCCallback() {
+                @Override
+                public void isSusses(boolean flag) {
+                    domainCrdFlag = flag;
+                }
+            });
+            if (!domainCrdFlag) {
+                return;
+            }
+            NFCWriteHelper.getInstence(intent).writeData(domainCard.getTwoByte(), 1, 2, new NFCWriteHelper.NFCCallback() {
+                @Override
+                public void isSusses(boolean flag) {
+                    domainCrdFlag = flag;
+                }
+            });
+        } catch (Exception e) {
+            domainCrdFlag = false;
+            throw new RuntimeException(e);
+        }
+    }
+
+    private void setTestCard(Intent intent, TestCard testCard) {
+        NFCWriteHelper.getInstence(intent).writeData(testCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
+            @Override
+            public void isSusses(boolean flag) {
+                testCardFlag = flag;
+            }
+        });
+    }
+
+
+    private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) {
+        NFCWriteHelper.getInstence(intent).writeData(configureDeviceRegistrationCrad.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
+            @Override
+            public void isSusses(boolean flag) {
+                configDeviceRegiestFlag = flag;
+            }
+        });
+    }
+
+    private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) {
+        try {
+            NFCWriteHelper.getInstence(intent).writeData(configurationPowerCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
+                @Override
+                public void isSusses(boolean flag) {
+                    configPowerFlag = flag;
+                }
+            });
+        } catch (Exception e) {
+            configPowerFlag = false;
+            throw new RuntimeException(e);
+        }
+    }
+
+
+    /**
+     * 鏌ヨ浣欓
+     *
      * @param initPeasantCode 鍐滄埛娉ㄥ唽缂栧彿
      */
     private void selectBalance(String initPeasantCode) {
@@ -503,7 +659,7 @@
             BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean();
             requestBean.setAFN("94");
             requestBean.setControl("01");
-            String initCode = WSHelper.getInstance(this).get("initCode", "");
+            String initCode = DeviceNumberUtils.getDeviceNumber();
             requestBean.setInitCode(initCode);
             requestBean.setInitPeasantCode(initPeasantCode);
             requestBean.setXuLie(SocketUtil.getXuLie(this));
@@ -518,6 +674,24 @@
                             stateText = new StringBuffer();
                             stateText.append("鐘�    鎬侊細");
                             String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]);  //BCD鐮�00鍚敤 01绂佺敤 02闅跺睘淇℃伅涓嶇 03鏃犳鍗′俊鎭� 04鍏跺畠s
+                            if (userCard == null) {
+                                userCard = new UserCard();
+                                userCard.setRechargeTimes(0);
+
+                                ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst();
+                                if (electricPriceBean != null) {
+                                    userCard.setElectricityPrice(electricPriceBean.getPrice());
+                                } else {
+                                    //榛樿鏄�1鍏�
+                                    userCard.setElectricityPrice(1.000f);
+                                }
+                                userCard.setSwipeNumber((short) 0);
+                                userCard.setState("00");
+                                userCard.setBalance(0);
+                                userCard.setAddressCode(adminData.getAddressCode());
+                                userCard.setInitPeasantCode(initPeasantCode);
+                            }
+
                             if ("00".equals(state)) {
                                 //鍙湁鍚姩鐘舵�佹墠鑳藉厖鍊�
                                 //閲戦
@@ -526,30 +700,42 @@
                                 //濮撳悕
                                 byte[] nameByte = Arrays.copyOfRange(readData.getBodyBytes(), 7, 19);
                                 String name = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte));
-                                rechargeBean = new RechargeBean();
-                                rechargeBean.setDate(System.currentTimeMillis());
-                                rechargeBean.setMorny(morny);
-                                if (userCardBean != null) {
-                                    rechargeBean.setUserName(userCardBean.getUserName());
-                                } else {
-                                    rechargeBean.setUserName(name);
-                                }
-                                List<UserCardBean> userCardBeans = baseDao.userCardDao().findAll();
-                                String userId = "";
-                                if (userCardBeans != null) {
-                                    for (int i = 0; i < userCardBeans.size(); i++) {
-                                        if (initPeasantCode.equalsIgnoreCase(userCardBeans.get(i).getInitPeasantCode())) {
-                                            userId = userCardBeans.get(i).getUserID();
+                                userCard.setBalance(balance);
+                                //涓巗ocket鏈嶅姟鍣ㄩ�氫俊鍚庤繘琛屽悗缁搷浣�
+
+                                if (!TextUtils.isEmpty(morny)) {
+                                    //鍏呭��
+                                    rechargeBean = new RechargeBean();
+                                    rechargeBean.setDate(System.currentTimeMillis());
+                                    rechargeBean.setMorny(morny);
+                                    if (userCardBean != null) {
+                                        rechargeBean.setUserName(userCardBean.getUserName());
+                                    } else {
+                                        rechargeBean.setUserName(name);
+                                    }
+                                    List<UserCardBean> userCardBeans = baseDao.userCardDao().findAll();
+                                    String userId = "";
+                                    if (userCardBeans != null) {
+                                        for (int i = 0; i < userCardBeans.size(); i++) {
+                                            if (initPeasantCode.equalsIgnoreCase(userCardBeans.get(i).getInitPeasantCode())) {
+                                                userId = userCardBeans.get(i).getUserID();
+                                            }
                                         }
                                     }
+                                    rechargeBean.setSerial(adminData.getSerial());
+                                    userCard.setRechargeDate(Calendar.getInstance());
+                                    rechargeBean.setBalance(MornyUtil.changeF2Y(balance + MornyUtil.changeY2F(morny)) + "");
+                                    rechargeBean.setUserId(userId);
+                                    recharge(initPeasantCode);
+                                } else {
+                                    //琛ュ崱閫昏緫
+                                    setUser(intent, userCard);
+                                    if (userFlag) {
+                                        NFCWreatActivity.this.finish();
+                                        ToastUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛");
+                                    }
                                 }
-                                rechargeBean.setSerial(adminData.getSerial());
-                                userCard.setBalance(balance);
-                                userCard.setRechargeDate(Calendar.getInstance());
-                                rechargeBean.setBalance(MornyUtil.changeF2Y(balance) + "");
-                                rechargeBean.setUserId(userId);
-                                //涓巗ocket鏈嶅姟鍣ㄩ�氫俊鍚庤繘琛屽悗缁搷浣�
-                                recharge(initPeasantCode);
+
                                 stateText.append("鍚敤");
                                 return;
                             } else if ("01".equals(state)) {

--
Gitblit v1.8.0