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