From feb7add1979c830e0d940286242a7c489f2f8f96 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期五, 27 九月 2024 09:23:34 +0800 Subject: [PATCH] 优化NFC模块架构,将一些方法抽调到父类中。 --- qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/ReadCardAcitivy.java | 299 ++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 184 insertions(+), 115 deletions(-) diff --git a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/ReadCardAcitivy.java b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/ReadCardAcitivy.java index bc359e9..258c817 100644 --- a/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/ReadCardAcitivy.java +++ b/qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/ReadCardAcitivy.java @@ -3,19 +3,26 @@ import android.content.Intent; import android.nfc.NfcAdapter; import android.os.Bundle; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import com.dayu.baselibrary.tools.HexUtil; import com.dayu.baselibrary.utils.MornyUtil; import com.dayu.baselibrary.utils.TipUtil; +import com.dayu.baselibrary.view.ConfirmDialog; import com.dayu.qihealonelibrary.card.BlackCard; import com.dayu.qihealonelibrary.card.ConfigurationPowerCard; import com.dayu.qihealonelibrary.card.DomainCard; import com.dayu.qihealonelibrary.card.ElectricPriceCard; +import com.dayu.qihealonelibrary.card.ManageCard; +import com.dayu.qihealonelibrary.card.ManagerToUserCard; import com.dayu.qihealonelibrary.card.RegionCard; import com.dayu.qihealonelibrary.card.UserCard; import com.dayu.qihealonelibrary.databinding.ActivityRedCardQhaBinding; +import com.dayu.qihealonelibrary.dbBean.AdminDataBean; +import com.dayu.qihealonelibrary.dbBean.UserCardBean; +import com.dayu.qihealonelibrary.tools.NFCWriteHelper; import com.dayu.qihealonelibrary.tools.NfcReadHelper; import com.dayu.qihealonelibrary.utils.CardCommon; import com.dayu.qihealonelibrary.view.ProgressDialog; @@ -29,14 +36,17 @@ * Date: 2023-11-10 19:52 * Description: 璇诲崱鐣岄潰 */ -public class ReadCardAcitivy extends BaseNfcActivityQHAlone { +public class ReadCardAcitivy extends QHAloneBaseNfcActivity { volatile UserCard userCard; ActivityRedCardQhaBinding redCardBinding; Intent intent; - + ConfirmDialog confirmDialog; + AdminDataBean adminData; + String cardNumber; + String userCardStr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -45,39 +55,38 @@ } - private void setUserData(String userName, int blance, String statu) { + private void setUserData(String userName, String statu, String cardNumber) { viweGone(true); redCardBinding.redName.setText("鐢ㄦ埛濮撳悕锛�" + userName); - redCardBinding.redRemainderBlance.setText("鍓╀綑閲戦锛�" + MornyUtil.changeF2Y(blance) + "鍏�"); redCardBinding.redStatu.setText("鍗$姸鎬侊細" + statu); if (userCard != null) { - Calendar calendar = userCard.getRechargeDate(); if (calendar != null) { int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); // 鏈堜唤浠�0寮�濮嬶紝鎵�浠ラ渶瑕佸姞1 int day = calendar.get(Calendar.DAY_OF_MONTH); - int hour = calendar.get(Calendar.HOUR_OF_DAY); - int minute = calendar.get(Calendar.MINUTE); - int second = calendar.get(Calendar.SECOND); - redCardBinding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細" + year + month + day + " " + hour + ":" + minute + ":" + second); + redCardBinding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細" + year + "骞�" + month + "鏈�" + day + "鏃�"); } else { redCardBinding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細鏃�"); } - - redCardBinding.redRechargeNumber.setText("鏈崱鍏呭�兼鏁帮細" + userCard.getRechargeTimes() + ""); + redCardBinding.redInitCode.setText(cardNumber); + redCardBinding.redRechargeNumber.setText("鏈崱鍏呭�兼鏁帮細" + userCard.getRechargeTimes() + " 娆�"); +// redCardBinding.redTotalWater.setText("鎬荤敤姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getTotalWater()) + " 鍚�"); +// redCardBinding.redTotalPower.setText("鎬荤敤鐢甸噺锛�" + MornyUtil.changeF2Y(userCard.getTotalElectric()) + " 搴�"); + redCardBinding.redRemainderBlance.setText("鍓╀綑閲戦锛�" + MornyUtil.changeF2Y(userCard.getBalance()) + " 鍏�"); +// redCardBinding.redRemainderWater.setText("鍓╀綑姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getSurplusWater()) + " 鍚�"); } } + @Override - public void onNewIntent(Intent intent) { + public void onNfcBack(Intent intent) { this.intent = intent; ProgressDialog.show(this); if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { readAllData(intent); } - super.onNewIntent(intent); } /** @@ -85,115 +94,175 @@ */ public void readAllData(Intent intent) { - NfcReadHelper.getInstence(intent, this) - .getOneSectorData(new NfcReadHelper.NFCCallListback() { - @Override - public void callBack(List<byte[]> data) { - //鑾峰彇1鎵囧尯鏁版嵁 - if (data != null && data.size() > 0) { - byte cardType = data.get(0)[0]; - String cardTypeStr = HexUtil.byteToHex(cardType); - switch (cardTypeStr) { - case CardCommon.USER_CARD_TYPE_1: - case CardCommon.USER_CARD_TYPE_2: - case CardCommon.USER_CARD_TYPE_3: - userCard = UserCard.getBean(data); - break; - case CardCommon.MANAGE_CRAD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓虹鐞嗗崱"); - stopAnim(); - break; - case CardCommon.CLEAN_CARD_TYPE: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓烘竻闆跺崱"); - stopAnim(); - break; - case CardCommon.REGISTERED_CARD_TYPE: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓洪噸鏂版敞鍐岃澶囧崱"); - stopAnim(); - break; - case CardCommon.CLEAN_ALL_USER_CARD_TYPE: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓哄垹闄ゅ叏閮ㄧ敤鎴峰崱"); - stopAnim(); - break; - case CardCommon.DOMAIN_CARD_TYPE: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓鸿缃煙鍚嶅崱"); - DomainCard domainCard = DomainCard.toBean(data); - assert domainCard != null; - redCardBinding.readCardDataTV.setText("搴忓彿锛�" + domainCard.getDomainNumber() + "\n" + "鍩熷悕锛�" + domainCard.getDomainName() + "\n" + "绔彛鍙凤細" + domainCard.getPort()); - stopAnim(); - break; - case CardCommon.TEST_CARD_TYPE: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓烘祴璇曞崱"); - stopAnim(); - break; - case CardCommon.CONFIGURATION_CARD_TYPE: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓洪厤缃澶囨敞鍐屼俊鎭崱"); - stopAnim(); - break; - case CardCommon.CONFIGURATION_POWER_CARD_TYPE: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠閰嶇疆姘存车鍔熺巼鍗�"); - ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(data.get(0)); - redCardBinding.readCardDataTV.setText(powerCard.getPower()); - stopAnim(); - break; - case CardCommon.BLACK: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓洪粦鍗�"); - BlackCard blackCard = BlackCard.getBean(data); - redCardBinding.readCardDataTV.setText("褰撳墠榛戝崱鐢ㄦ埛鍙蜂负锛�" + blackCard.getBlackCard()); - break; - case CardCommon.REGION: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓哄尯鍩熻〃鍙峰崱"); - RegionCard regionCard = RegionCard.getBean(data); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("鍖哄煙鍦板潃锛�").append(regionCard.getRegion()).append("\n"); - stringBuilder.append("鎺у埗鍣ㄧ紪鍙凤細").append(regionCard.getControllerCodel()).append("\n"); - redCardBinding.readCardDataTV.setText(stringBuilder.toString()); - break; - case CardCommon.ELECTRIC_PRICE: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓虹數閲忓崟浠峰崱"); - ElectricPriceCard electricPriceCard = ElectricPriceCard.getBean(data); - StringBuilder electricPriceBuilder = new StringBuilder(); - electricPriceBuilder.append("鐢甸噺鍗曚环锛�").append(electricPriceCard.getElectricPrice()).append("\n"); - redCardBinding.readCardDataTV.setText(electricPriceBuilder.toString()); - break; - default: - TipUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); - stopAnim(); - break; - } + String cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber(); + + String[] cardTypes = cardType.split(","); + if (cardTypes != null && cardTypes.length == 2) { + cardNumber = cardType.split(",")[0]; + cardNumber = HexUtil.spaceHex(cardNumber); + cardNumber = HexUtil.HighLowHex(cardNumber); + cardType = cardType.split(",")[1]; + } + List<byte[]> data = NfcReadHelper.getInstence(intent, this).getOnesectorData(); + String state = ""; + if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_1)) { + state = "缁堢鍐欏崱"; + } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_2)) { + state = "鍒峰崱寮�娉靛悗"; + } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_3)) { + state = "鍙犲姞鍏呭��"; + } + switch (cardType) { + case CardCommon.USER_CARD_TYPE_1: + case CardCommon.USER_CARD_TYPE_2: + case CardCommon.USER_CARD_TYPE_3: + + if (!data.isEmpty()) { + if (!TextUtils.isEmpty(cardNumber)) { + userCard = new UserCard().getBean(data); + List<UserCardBean> userCardBeans = baseDao.userCardDao().findUserName(cardNumber); + if (userCardBeans != null && !userCardBeans.isEmpty()) { + UserCardBean userName = userCardBeans.get(0); + setUserData(userName.getUserName(), state, cardNumber); } else { - TipUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); + setUserData("鏈煡璇㈠埌鐢ㄦ埛鍚�", state, cardNumber); + } + } else { + + } + } else { + TipUtil.show("鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒"); + } + + break; + case CardCommon.MANAGE_CRAD://绠$悊鍗� + ManageCard manageCard = ManageCard.getBean(data); + viweGone(false); + userCardStr = manageCard.getUserCard().toUpperCase(); + userCardStr = HexUtil.spaceHex(userCardStr); + userCardStr = HexUtil.HighLowHex(userCardStr); + redCardBinding.readCardTypeTV.setText("褰撳墠涓虹鐞嗗崱" + "\n\n" + + "鍘熷鍗″彿锛�" + userCardStr); + if (manageCard.getType()==(byte) 1){ + //褰�01鏃跺皢1鎵囧尯0鍧楀師绠$悊鍗′俊鎭敼鎴愮敤鎴峰崱鍐呭 + confirmDialog=new ConfirmDialog(this, "鏄惁纭琛ュ崱锛岃鍗″皢鎴愪负鏂扮敤鎴峰崱锛熷苟涓斾笉瑕佺Щ鍔ㄥ崱鐗�", new View.OnClickListener() { + @Override + public void onClick(View v) { + ProgressDialog.show(ReadCardAcitivy.this); + try { + confirmDialog.dismiss(); + + List<UserCardBean> userCardBeans = baseDao.userCardDao().findUserName(userCardStr); + if (userCardBeans != null && !userCardBeans.isEmpty()) { + UserCardBean userName = userCardBeans.get(0); + userName.setCardNumber(cardNumber); + baseDao.userCardDao().update(userName); + } + + NFCWriteHelper nfcWriteHelper= NFCWriteHelper.getInstence(intent,ReadCardAcitivy.this); + adminData = baseDao.adminDao().findFirst(); + ManagerToUserCard managerToUserCard=new ManagerToUserCard(); + managerToUserCard.setArerNumber(Integer.valueOf(adminData.getSerial())); + managerToUserCard.setDeviceNumberl(Integer.valueOf(adminData.getAddressCode())); + managerToUserCard.setTotalElectric(manageCard.getTotalElectric()); + if (nfcWriteHelper.writeData(managerToUserCard.getZeroBytes(),1,0)){ + TipUtil.show(ReadCardAcitivy.this, "琛ュ崱鎴愬姛", () -> ReadCardAcitivy.this.finish()); + }else { + TipUtil.show(ReadCardAcitivy.this, "琛ュ崱澶辫触锛岃閲嶆柊鍒峰崱", () -> ReadCardAcitivy.this.finish()); + } + + + } catch (Exception e) { + e.printStackTrace(); + } stopAnim(); } + }); + confirmDialog.show(); + } + break; + case CardCommon.CLEAN_CARD_TYPE: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓烘竻闆跺崱"); + break; + case CardCommon.REGISTERED_CARD_TYPE: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓洪噸鏂版敞鍐岃澶囧崱"); + break; + case CardCommon.CLEAN_ALL_USER_CARD_TYPE: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓哄垹闄ゅ叏閮ㄧ敤鎴峰崱"); + break; + case CardCommon.DOMAIN_CARD_TYPE: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓鸿缃煙鍚嶅崱"); + if (!data.isEmpty()) { + DomainCard domainCard = DomainCard.toBean(data); + assert domainCard != null; + redCardBinding.readCardDataTV.setText("搴忓彿锛�" + domainCard.getDomainNumber() + "\n" + "鍩熷悕锛�" + domainCard.getDomainName() + "\n" + "绔彛鍙凤細" + domainCard.getPort()); + } else { + TipUtil.show("鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒"); + } + break; + case CardCommon.TEST_CARD_TYPE: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓烘祴璇曞崱"); + break; + case CardCommon.CONFIGURATION_CARD_TYPE: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓洪厤缃澶囨敞鍐屼俊鎭崱"); + break; + case CardCommon.CONFIGURATION_POWER_CARD_TYPE: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠閰嶇疆姘存车鍔熺巼鍗�"); + if (!data.isEmpty()) { + ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(data.get(0)); + redCardBinding.readCardDataTV.setText(powerCard.getPower()); + } else { + TipUtil.show("鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒"); + } + break; + case CardCommon.BLACK: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓洪粦鍗�"); + BlackCard blackCard = BlackCard.getBean(data); + redCardBinding.readCardDataTV.setText("褰撳墠榛戝崱鐢ㄦ埛鍙蜂负锛�" + blackCard.getBlackCard()); + break; + case CardCommon.REGION: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓哄尯鍩熻〃鍙峰崱"); + if (!data.isEmpty()) { + RegionCard regionCard = RegionCard.getBean(data); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("鍖哄煙鍦板潃锛�").append(regionCard.getRegion()).append("\n"); + stringBuilder.append("鎺у埗鍣ㄧ紪鍙凤細").append(regionCard.getControllerCodel()).append("\n"); + redCardBinding.readCardDataTV.setText(stringBuilder.toString()); + } else { + TipUtil.show("鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒"); + } - } + break; + case CardCommon.ELECTRIC_PRICE: + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓虹數閲忓崟浠峰崱"); + if (!data.isEmpty()) { + ElectricPriceCard electricPriceCard = ElectricPriceCard.getBean(data); + StringBuilder electricPriceBuilder = new StringBuilder(); + electricPriceBuilder.append("鐢甸噺鍗曚环锛�").append(electricPriceCard.getElectricPrice()); + electricPriceBuilder.append("鍏�"); + redCardBinding.readCardDataTV.setText(electricPriceBuilder.toString()); + } else { + TipUtil.show("鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒"); + } + break; + default: + TipUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); + break; + } + stopAnim(); - @Override - public void error(int code) { - switch (code) { - case CardCommon.ERROR_MOVE: - stopAnim(); - TipUtil.show("杩炴帴涓柇锛岃閲嶆柊璐村悎鍗$墖"); - break; - default: - stopAnim(); - TipUtil.show("鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒"); - } - } - }); } -- Gitblit v1.8.0