From d58bc0e2057f58342f490f5605eda3b80dc0ca29 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 27 三月 2024 11:47:21 +0800 Subject: [PATCH] 添加中安身份证识别相关功能 优化贴卡提示 优化二次确认的按钮样式 添加超时时不在主线程的处理 --- app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java | 630 ++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 379 insertions(+), 251 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..096e8f7 100644 --- a/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java @@ -1,21 +1,29 @@ package com.dayu.recharge.activity; +import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.text.TextUtils; +import android.util.Log; +import android.view.KeyEvent; import android.view.LayoutInflater; +import android.view.View; +import android.widget.Toast; 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.ElectricPriceBean; import com.dayu.recharge.dbBean.RechargeBean; import com.dayu.recharge.dbBean.UserCardBean; import com.dayu.recharge.net.SocketCallBack; @@ -24,40 +32,33 @@ import com.dayu.recharge.socketBean.BalanceSelecteRequestBean; import com.dayu.recharge.socketBean.RechargeRequestBean; import com.dayu.recharge.tools.BcdUtil; -import com.dayu.recharge.tools.HexUtil; import com.dayu.recharge.tools.NFCWriteHelper; import com.dayu.recharge.tools.NfcReadHelper; +import com.dayu.recharge.tools.WriteCardUtils; 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.MyCommon; import com.dayu.recharge.utils.SocketUtil; -import com.dayu.recharge.utils.ToastUtil; -import com.dayu.recharge.utils.WSHelper; +import com.dayu.recharge.utils.TipUtil; +import com.dayu.recharge.view.ConfirmDialog; +import com.dayu.recharge.view.ProgressDialog; +import com.dayu.recharge.view.TitleBar; import com.tencent.bugly.crashreport.CrashReport; import java.util.Arrays; import java.util.Calendar; -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 { - - - /** - * 璇ュ崱宸插啓鍏ョ敤鎴蜂俊鎭� - */ - public final static int HAS_USER = 1; - /** - * 璇ュ崱鏈啓鍏ョ敤鎴蜂俊鎭� - */ - public final static int NO_USER = 2; - /** - * 鍏呭�� - */ - public final static int RECHARGE = 3; - - public final static int ERROR = -1; + public static String TAG = "NFCWreatActivity"; boolean cleanFlag = false; boolean userFlag = false; @@ -65,13 +66,24 @@ 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; + + /** + * 鏄惁涓嶅啀楠岃瘉鐢ㄦ埛鐩存帴鍐欏崱 + */ + boolean isAgainWrite = false; + UserCardBean userCardBean; - CleanCard cleanCard; String morny; + String userName; AdminDataBean adminData; RechargeBean rechargeBean; Intent intent; @@ -79,7 +91,14 @@ RegisteredCard registeredCard; CleanUserCard cleanUserCard; + ManageCard manageCard; + DomainCard domainCard; + CleanCard cleanCard; + ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad; + TestCard testCard; + + ConfigurationPowerCard configurationPowerCard; //鎵撳嵃 MyApplication baseApp; @@ -88,7 +107,13 @@ * 鏄惁鏄敤鎴峰崱锛屽亣濡傛槸鐢ㄦ埛鍗$殑璇濋渶瑕佹娴嬪崱鐗囨槸鍚﹀凡缁忓紑杩囨埛锛屽亣濡傚凡寮�鎴峰垯鎶ラ敊涓嶈兘鍐嶅啓鍗� */ boolean isUser = false;// + + //鏄惁鏄厖鍊艰繃绋� + boolean isRecharge = false; + //鍏呭�奸�氫俊鏄惁瀹屾垚 + boolean rechargeIsOk = false; ActivityWriteTextBinding binding; + ConfirmDialog confirmDialog; @Override protected void onCreate(Bundle savedInstanceState) { @@ -96,8 +121,8 @@ try { binding = ActivityWriteTextBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); - nfcWreatActivity = this; + setData(); getData(); baseApp = (MyApplication) getApplication(); } catch (Exception e) { @@ -107,28 +132,106 @@ } + private void setData() { + titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE, v -> { + //澶勭悊鍥犵敤鎴疯鎿嶄綔杩斿洖瀵艰嚧涓嶈兘鍐欏崱鐨勯棶棰橈紝娣诲姞浜屾纭 + back(); + }); + } + + private void back() { + if (isUser) { + confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> { + confirmDialog.dismiss(); + myFinish(); + }); + confirmDialog.show(); + } else if (!TextUtils.isEmpty(morny)) { + confirmDialog = new ConfirmDialog(NFCWreatActivity.this, v -> { + confirmDialog.dismiss(); + myFinish(); + }); + confirmDialog.show(); + } else { + finish(); + } + } + + + private void myFinish() { + if (NewCardActivity.newCardActivity != null) { + NewCardActivity.newCardActivity.finish(); + } + if (RechargeActivity.rechargeActivity != null) { + RechargeActivity.rechargeActivity.finish(); + } + NFCWreatActivity.nfcWreatActivity.finish(); + } + + + //鐐瑰嚮涓ゆ閫�鍑虹▼搴� 鏈夋椂闂撮棿闅� 闂撮殧鍐呯偣鍑诲垯閫�鍑虹▼搴� 鍚﹀垯 鍒欐彁绀� + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + back(); + return true; + } + return super.onKeyDown(keyCode, event); + } + + + @SuppressLint("SetTextI18n") private void getData() { try { if (this.getIntent().hasExtra("userCard")) { userCard = (UserCard) this.getIntent().getSerializableExtra("userCard"); - isUser = true; } 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"); + isUser = true; } 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")) { + startAnim(); + isRecharge = true; + morny = this.getIntent().getStringExtra("morny"); + userName = this.getIntent().getStringExtra("userName"); + binding.cardData.setText("鍏呭�奸噾棰濓細" + morny + "鍏�"); + // 鍏呭�奸�昏緫 + recharge(userCard.getInitPeasantCode(), userName); + } + try { adminData = baseDao.adminDao().findFirst(); } catch (Exception e) { @@ -145,46 +248,38 @@ * 妫�娴嬫槸鍚︽槸鐢ㄦ埛鍗★紝鍋囧鏄敤鎴峰崱鐨勮瘽闇�瑕佹娴嬪崱鐗囨槸鍚﹀凡缁忓紑杩囨埛锛屽亣濡傚凡寮�鎴峰垯鎶ラ敊涓嶈兘鍐嶅啓鍗″亣濡傛槸鐢ㄦ埛鍗¢渶瑕� */ private void checkHasUser() { - try { - NfcReadHelper.getInstence(intent) - .getData(1, 0, new NfcReadHelper.NFCCallByteback() { - @Override - public void callBack(byte[] data) { - Message message = new Message(); - String type = HexUtil.byteToHex(data[0]).toUpperCase(); - switch (type) { - case "A1": - case "A8": - case "A2": - message.what = HAS_USER; - break; - default: - message.what = NO_USER; - break; - } - handler.sendMessage(message); - } - @Override - public void error() { - Message message = new Message(); - message.what = ERROR; - handler.sendMessage(message); - } - }); - } catch (Exception e) { - e.printStackTrace(); - CrashReport.postCatchedException(e); + String cardType = NfcReadHelper.getInstence(intent, this).getCradType(); + Log.i("NFCWreatActivity", "cardType=" + cardType); + if (cardType.equals(MyCommon.USER_CARD_TYPE_1) || + cardType.equals(MyCommon.USER_CARD_TYPE_2) || + cardType.equals(MyCommon.USER_CARD_TYPE_3) + ) { + binding.textView.setText("璇ュ崱宸茬粡鍐欏叆鐢ㄦ埛淇℃伅锛岃鏇存崲鍗$墖"); + binding.textView.setTextColor(getResources().getColor(R.color.red)); + } else if (cardType.equals("-1")) { + TipUtil.show(NFCWreatActivity.this, "璇峰嬁绉诲姩鍗$墖锛岃鍗″け璐ヨ閲嶈瘯锛侊紒"); + } else if (cardType.equals("-2")) { + TipUtil.show(NFCWreatActivity.this, "璇诲崱澶辫触,璇锋鏌ュ崱鏄惁鏄敤鎴峰崱"); + } else { + Log.i("NFCWreatActivity", "olduserCard!=null saveData"); + saveData(); } + + stopAnim(); } private void saveData() { try { startAnim(); - if (userCard != null || cleanCard != null || manageCard != null || registeredCard != null || cleanUserCard != null) { - if (userCard != null) { - setUser(intent, userCard); + if (userCard != null || cleanCard != null || manageCard != null + || registeredCard != null || cleanUserCard != null + || domainCard != null || testCard != null + || configureDeviceRegistrationCrad != null + || configurationPowerCard != null) { + if (userCard != null && TextUtils.isEmpty(morny)) { + userFlag = WriteCardUtils.setUser(intent, userCard, this); } if (cleanCard != null) { setClean(intent, cleanCard); @@ -198,23 +293,27 @@ 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) { - NewCardActivity.newCardActivity.finish(); - } - + //鐢ㄦ埛鍗� + startDetailActivity(userCardBean.getUserName(), "鍚敤"); } else if (!TextUtils.isEmpty(morny)) { - NFCWreatActivity.this.finish(); - ToastUtil.show(this, "鍏呭�兼垚鍔�"); + TipUtil.show(NFCWreatActivity.this, "鍏呭�兼垚鍔�", NFCWreatActivity.this::finish); } else { - NFCWreatActivity.this.finish(); - ToastUtil.show(this, "鍐欏崱鎴愬姛"); + TipUtil.show(NFCWreatActivity.this, "鍐欏崱鎴愬姛", NFCWreatActivity.this::finish); } } catch (Exception e) { @@ -222,14 +321,15 @@ CrashReport.postCatchedException(e); } } else { - ToastUtil.show(this, "鍐欏崱澶辫触"); + TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触"); } stopAnim(); - } else if (!TextUtils.isEmpty(morny)) { - readAllData(intent); + } else if (userCard == null && userCardBean != null) { + //琛ュ崱閫昏緫 + selectBalance(userCardBean.getInitPeasantCode()); } else { stopAnim(); - ToastUtil.show(this, "鍙傛暟閿欒"); + TipUtil.show(this, "鍙傛暟閿欒"); } } catch (Exception e) { e.printStackTrace(); @@ -239,11 +339,20 @@ @Override public void onNewIntent(Intent intent) { + super.onNewIntent(intent); try { this.intent = intent; startAnim(); + Log.i("NFCWreatActivity", "isUser:" + isUser); if (isUser) { checkHasUser(); + } else if (isRecharge) { + if (rechargeIsOk) { + rechargeWrratCard(); + } else { + Toast.makeText(this, "姝e湪閫氫俊璇风◢鍚�", Toast.LENGTH_SHORT).show(); + } + } else { saveData(); } @@ -252,65 +361,6 @@ CrashReport.postCatchedException(e); } } - - - /** - * 璇诲彇鍏ㄩ儴鏁版嵁 - */ - private void readAllData(Intent intent) { - try { - NfcReadHelper.getInstence(intent) - .getAllData(new NfcReadHelper.NFCCallListback() { - @Override - public void callBack(Map<String, List<byte[]>> data) { - Message message = new Message(); -// 鑾峰彇1鎵囧尯鏁版嵁 - List<byte[]> oneSector = data.get("1"); - if (oneSector != null && oneSector.size() > 0) { - userCard = UserCard.getBean(oneSector); - message.what = RECHARGE; - } else { - message.what = ERROR; - } - handler.sendMessage(message); - } - - @Override - public void error() { - Message message = new Message(); - message.what = ERROR; - handler.sendMessage(message); - } - }); - } catch (Exception e) { - e.printStackTrace(); - CrashReport.postCatchedException(e); - } - } - - Handler handler = new Handler(new Handler.Callback() { - @Override - public boolean handleMessage(Message msg) { - switch (msg.what) { - - case HAS_USER://鍒ゆ柇宸插啓鍏ョ敤鎴� - ToastUtil.show(NFCWreatActivity.this, "璇ュ崱宸茬粡鍐欏叆鐢ㄦ埛淇℃伅锛岃鏇存崲鍗$墖"); - break; - case NO_USER://娌℃湁鍐欒繃鐢ㄦ埛缁х画淇濆瓨 - saveData(); - break; - case RECHARGE://鍏呭�兼祦绋� - selectBalance(userCard.getInitPeasantCode()); - break; - default: - stopAnim(); - ToastUtil.show(NFCWreatActivity.this, "鍗$墖璇诲彇澶辫触"); - break; - - } - return false; - } - }); /** @@ -323,13 +373,13 @@ StringBuffer data = new StringBuffer(); if (rechargeBean != null) { data.append("*****************************" + "\n"); - data.append(" 鍐滀笟姘翠环缁煎悎鏀归潻鍏呭�肩郴缁焅n\n"); - data.append("璁惧搴忓垪鍙凤細" + rechargeBean.getSerial() + "\n"); - data.append("鐢ㄦ埛鍚嶏細" + rechargeBean.getUserName() + "\n"); + data.append(getResources().getString(R.string.login_title)).append("\n"); + data.append("璁惧搴忓垪鍙凤細").append(rechargeBean.getSerial()).append("\n"); + data.append("鐢ㄦ埛鍚嶏細").append(rechargeBean.getUserName()).append("\n"); // data.append("鎴� 鍙凤細" + rechargeBean.getUserNum() + "\n"); - data.append("鍏呭�奸噾棰濓細" + rechargeBean.getMorny() + "鍏�" + "\n"); - data.append("鍗″唴浣欓锛�" + rechargeBean.getBalance() + "鍏�" + "\n"); - data.append("鏃� 鏈燂細" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2) + "\n\n"); + data.append("鍏呭�奸噾棰濓細").append(rechargeBean.getMorny()).append("鍏�").append("\n"); + data.append("鍗″唴浣欓锛�").append(rechargeBean.getBalance()).append("鍏�").append("\n"); + data.append("鏃� 鏈燂細").append(DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2)).append("\n\n"); data.append("*****************************"); } @@ -345,6 +395,7 @@ } void startAnim() { + binding.avi.setVisibility(View.VISIBLE); binding.avi.show(); // or avi.smoothToShow(); } @@ -356,56 +407,72 @@ //鍏呭�间笂浼狅紙Socket锛� - private void recharge(String initPeasantCode) { + private void recharge(String initPeasantCode, String name) { 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"); rechargeRequestBean.setInitPeasantCode(initPeasantCode); rechargeRequestBean.setBalance(morny); + rechargeRequestBean.setOrderId(SocketUtil.getOrderId(NFCWreatActivity.this)); - SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(), new SocketCallBack() { + SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(),"95", new SocketCallBack() { @Override public void onSocketResponse(SocketData readData) { + //閲戦 + byte[] blanceByte = Arrays.copyOfRange(readData.getBodyBytes(), 3, 7); + int balance = SocketUtil.get16to10LowHigh(blanceByte); + //濮撳悕 + byte[] nameByte = Arrays.copyOfRange(readData.getBodyBytes(), 7, 19); + userName = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte)); + byte[] orderByte = Arrays.copyOfRange(readData.getBodyBytes(), 19, 27); + String orderId = BcdUtil.bcdToStr(orderByte); if (CRC8.isCRC8(readData.getOriginDataBytes())) { String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]); //00鍚敤01绂佺敤02闅跺睘淇℃伅涓嶇03鏃犳鍗′俊鎭�04鍏跺畠 if ("00".equalsIgnoreCase(state)) { + rechargeIsOk = true; + binding.cardData.setText("鍏呭��"+morny+"鍏冮�氫俊瀹屾垚锛岃甯栧崱鍐欏崱"); + rechargeBean = new RechargeBean(); + rechargeBean.setDate(System.currentTimeMillis()); + rechargeBean.setMorny(morny); + rechargeBean.setUserName(name); + + rechargeBean.setSerial(adminData.getSerial()); + userCard.setRechargeDate(Calendar.getInstance()); + userCard.setBalance(balance); + rechargeBean.setBalance(MornyUtil.changeF2Y(balance)); + rechargeBean.setInitPeasantCode(initPeasantCode); + rechargeBean.setOrderID(orderId); try { baseDao.rechargeDao().insert(rechargeBean); } catch (Exception e) { e.printStackTrace(); } userCard.setRechargeTimes(userCard.getRechargeTimes() + 1); - setUser(intent, userCard); - // 鎵撳嵃鐩稿叧 - setPrinterData(rechargeBean); - ToastUtil.show(NFCWreatActivity.this, "鍐欏崱鎴愬姛"); - RechargeActivity.rechargeActivity.finish(); - NFCWreatActivity.nfcWreatActivity.finish(); } else if ("01".equalsIgnoreCase(state)) { + userCard.setState("01"); + userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this); NFCWreatActivity.this.finish(); - ToastUtil.show(NFCWreatActivity.this, "鍏呭�兼姤鏂囬敊璇�-绂佺敤"); + TipUtil.show("鍏呭�兼姤鏂囬敊璇�-绂佺敤"); } else if ("02".equalsIgnoreCase(state)) { - ToastUtil.show(NFCWreatActivity.this, "鍏呭�兼姤鏂囬敊璇�-闅跺睘淇℃伅涓嶇"); + TipUtil.show("鍏呭�兼姤鏂囬敊璇�-闅跺睘淇℃伅涓嶇"); NFCWreatActivity.this.finish(); } else if ("03".equalsIgnoreCase(state)) { - ToastUtil.show(NFCWreatActivity.this, "鍏呭�兼姤鏂囬敊璇�-鏃犳鍗′俊鎭�"); + TipUtil.show("鍏呭�兼姤鏂囬敊璇�-鏃犳鍗′俊鎭�"); NFCWreatActivity.this.finish(); } else { - ToastUtil.show(NFCWreatActivity.this, "鍏呭�兼姤鏂囬敊璇�-鍏跺畠"); + TipUtil.show("鍏呭�兼姤鏂囬敊璇�-鍏跺畠"); NFCWreatActivity.this.finish(); } - - } else { //鏍¢獙CRC閿欒 - ToastUtil.show(NFCWreatActivity.this, "鍏呭�兼姤鏂囬敊璇牎楠孋RC閿欒"); + TipUtil.show(NFCWreatActivity.this, "鍏呭�兼姤鏂囬敊璇牎楠孋RC閿欒"); NFCWreatActivity.this.finish(); } stopAnim(); @@ -413,8 +480,11 @@ @Override public void onSocketError(int code, String msg) { - stopAnim(); - ToastUtil.show(NFCWreatActivity.this, msg); + runOnUiThread(() -> { + stopAnim(); + TipUtil.show(NFCWreatActivity.this, msg); + }); + } }); } catch (Exception e) { @@ -424,13 +494,31 @@ } - private void setmanageCard(Intent intent, final ManageCard manageCard) { - NFCWriteHelper.getInstence(intent).writeData(manageCard.toZeroByte(), 1, 0, new NFCWriteHelper.NFCCallback() { - @Override - public void isSusses(boolean flag) { - manageCardFlag = flag; + //寰�鍗″唴鍐欏厖鍊煎悗鐨勬暟鎹� + private void rechargeWrratCard() { + UserCard userCardold = NfcReadHelper.getInstence(intent, this).getUserCardData(); + if (userCardold != null) { + //鍒ゆ柇鏄惁鍏呭�肩殑鏄竴涓崱 + if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode()) || isAgainWrite) { + userCard.setState("00"); + userFlag = WriteCardUtils.setUser(intent, userCard, this); + // 鎵撳嵃鐩稿叧 + if (userFlag) { + setPrinterData(rechargeBean); + startDetailActivity(userName, "鍚敤"); + } else { + isAgainWrite = true; + TipUtil.show(NFCWreatActivity.this, "鍐欏崱澶辫触锛岃閲嶆柊璐村崱"); + } + } else { + TipUtil.show(NFCWreatActivity.this, "璇诲彇鐨勫崱鍜屽厖鍊肩殑鍗′笉涓�鑷�"); } - }); + } + stopAnim(); + } + + private void setmanageCard(Intent intent, final ManageCard manageCard) { + manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(baseDao), 1, 0); } /** @@ -440,35 +528,9 @@ * @param clearOrInitCard */ private void setClean(Intent intent, final CleanCard clearOrInitCard) { - NFCWriteHelper.getInstence(intent).writeData(clearOrInitCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() { - @Override - public void isSusses(boolean flag) { - cleanFlag = flag; - } - }); + cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(baseDao), 1, 0); } - //鍚戝崱鍐欏叆鐢ㄦ埛淇℃伅 - private void setUser(Intent intent, UserCard userCard) { - NFCWriteHelper.getInstence(intent).writeData(userCard.getZeroBytes(), 1, 0, new NFCWriteHelper.NFCCallback() { - @Override - public void isSusses(boolean flag) { - userFlag = flag; - } - }); - NFCWriteHelper.getInstence(intent).writeData(userCard.getOneBytes(), 1, 1, new NFCWriteHelper.NFCCallback() { - @Override - public void isSusses(boolean flag) { - userFlag = flag; - } - }); - NFCWriteHelper.getInstence(intent).writeData(userCard.getTwoBytes(), 1, 2, new NFCWriteHelper.NFCCallback() { - @Override - public void isSusses(boolean flag) { - userFlag = flag; - } - }); - } /** * 閲嶆柊娉ㄥ唽璁惧鍗� @@ -477,85 +539,137 @@ * @param registeredCard */ private void setRegisteredCard(Intent intent, RegisteredCard registeredCard) { - NFCWriteHelper.getInstence(intent).writeData(registeredCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() { - @Override - public void isSusses(boolean flag) { - registeredFlag = flag; - } - }); - } - - private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) { - NFCWriteHelper.getInstence(intent).writeData(cleanUserCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() { - @Override - public void isSusses(boolean flag) { - cleanUserCardFlag = flag; - } - }); + registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(baseDao), 1, 0); } /** + * 鍒犻櫎鍏ㄩ儴鐢ㄦ埛鍗� + * + * @param intent + * @param cleanUserCard + */ + private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) { + cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(baseDao), 1, 0); + } + + /** + * 璁剧疆鍩熷悕鍗� + * + * @param intent + * @param domainCard + */ + private void setDomainCard(Intent intent, DomainCard domainCard) { + try { + domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getZeroByte(), 1, 0); + if (!domainCrdFlag) { + return; + } + domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getOneByte(), 1, 1); + if (!domainCrdFlag) { + return; + } + domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainCard.getTwoByte(), 1, 2); + } catch (Exception e) { + domainCrdFlag = false; + throw new RuntimeException(e); + } + } + + private void setTestCard(Intent intent, TestCard testCard) { + testCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(testCard.toByte(baseDao), 1, 0); + } + + + private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) { + configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent, this).writeData(configureDeviceRegistrationCrad.toByte(baseDao), 1, 0); + } + + private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) { + try { + configPowerFlag = NFCWriteHelper.getInstence(intent, this).writeData(configurationPowerCard.toByte(baseDao), 1, 0); + } catch (Exception e) { + configPowerFlag = false; + throw new RuntimeException(e); + } + } + + + private void startDetailActivity(String userName, String statu) { + Intent detail = new Intent(this, RechargeDetail.class); + detail.putExtra("userName", userName); + detail.putExtra("statu", statu); + detail.putExtra("userCard", userCard); + if (!TextUtils.isEmpty(morny)) { + detail.putExtra("morny", morny); + } + startActivity(detail); + myFinish(); + } + + /** + * 鏌ヨ浣欓 + * * @param initPeasantCode 鍐滄埛娉ㄥ唽缂栧彿 */ private void selectBalance(String initPeasantCode) { - + Log.i(TAG, "琛ュ崱鏌ヨ浣欓:鍐滄埛娉ㄥ唽缂栧彿 " + initPeasantCode); try { + startAnim(); 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)); - SocketNet.getInstance().sendTestMessage(requestBean.pack(), new SocketCallBack() { + SocketNet.getInstance().sendTestMessage(requestBean.pack(), "94",new SocketCallBack() { @Override public void onSocketResponse(SocketData readData) { if (CRC8.isCRC8(readData.getOriginDataBytes())) { - StringBuffer stateText = null; - try { stateText = new StringBuffer(); - stateText.append("鐘� 鎬侊細"); String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]); //BCD鐮�00鍚敤 01绂佺敤 02闅跺睘淇℃伅涓嶇 03鏃犳鍗′俊鎭� 04鍏跺畠s - if ("00".equals(state)) { - //鍙湁鍚姩鐘舵�佹墠鑳藉厖鍊� - //閲戦 - byte[] blanceByte = Arrays.copyOfRange(readData.getBodyBytes(), 3, 7); - int balance = SocketUtil.get16to10LowHigh(blanceByte); - //濮撳悕 - 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()); + if (userCard == null) { + userCard = new UserCard(); + userCard.setRechargeTimes(0); + ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst(); + if (electricPriceBean != null) { + userCard.setElectricityPrice(electricPriceBean.getPrice()); } else { - rechargeBean.setUserName(name); + //榛樿鏄�1鍏� + userCard.setElectricityPrice(1.000f); } - 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.setBalance(balance); - userCard.setRechargeDate(Calendar.getInstance()); - rechargeBean.setBalance(MornyUtil.changeF2Y(balance) + ""); - rechargeBean.setUserId(userId); - //涓巗ocket鏈嶅姟鍣ㄩ�氫俊鍚庤繘琛屽悗缁搷浣� - recharge(initPeasantCode); + userCard.setSwipeNumber((short) 0); + userCard.setState("00"); + userCard.setBalance(0); + userCard.setAddressCode(adminData.getAddressCode()); + userCard.setInitPeasantCode(initPeasantCode); + } + //鍙湁鍚姩鐘舵�佹墠鑳藉厖鍊� + //閲戦 + byte[] blanceByte = Arrays.copyOfRange(readData.getBodyBytes(), 3, 7); + int balance = SocketUtil.get16to10LowHigh(blanceByte); + //濮撳悕 + byte[] nameByte = Arrays.copyOfRange(readData.getBodyBytes(), 7, 19); + String name = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte)); + if ("00".equals(state)) { stateText.append("鍚敤"); + userCard.setBalance(balance); + userCard.setState("00"); + //琛ュ崱閫昏緫 + userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this); + if (userFlag) { + TipUtil.show(NFCWreatActivity.this, "琛ュ崱鎴愬姛", () -> NFCWreatActivity.this.finish()); + } return; } else if ("01".equals(state)) { stateText.append("绂佺敤"); userCard.setState("01"); - setUser(intent, userCard); + userCard.setBalance(balance); + userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this); + startDetailActivity(name, stateText.toString()); + } else if ("02".equals(state)) { stateText.append("闅跺睘淇℃伅涓嶇"); } else if ("03".equals(state)) { @@ -563,28 +677,42 @@ } else if ("04".equals(state)) { stateText.append("鍏跺畠"); } - ToastUtil.show(NFCWreatActivity.this, stateText.toString()); + stopAnim(); + binding.cardData.setText(stateText); + TipUtil.show(NFCWreatActivity.this, stateText.toString()); } catch (Exception e) { e.printStackTrace(); stopAnim(); } } else { //鏍¢獙CRC閿欒 - ToastUtil.show(NFCWreatActivity.this, "寮�鍗℃姤鏂囨牎楠孋RC閿欒"); + TipUtil.show(NFCWreatActivity.this, "寮�鍗℃姤鏂囨牎楠孋RC閿欒"); } + stopAnim(); + } @Override public void onSocketError(int code, String msg) { - stopAnim(); - ToastUtil.show(NFCWreatActivity.this, msg); + runOnUiThread(() -> { + stopAnim(); + TipUtil.show(NFCWreatActivity.this, msg); + }); + } }); } catch (Exception e) { e.printStackTrace(); CrashReport.postCatchedException(e); + stopAnim(); + ProgressDialog.dismiss(); } } + protected void onDestroy() { + super.onDestroy(); + ProgressDialog.dismiss(); + nfcWreatActivity = null; + } } \ No newline at end of file -- Gitblit v1.8.0