package com.dayu.henanlibrary.activity;
|
|
import android.annotation.SuppressLint;
|
import android.content.Intent;
|
import android.os.Bundle;
|
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.baselibrary.tools.BcdUtil;
|
import com.dayu.baselibrary.tools.print.PrintAdater;
|
import com.dayu.baselibrary.tools.print.ShangMiAidlUtil;
|
import com.dayu.baselibrary.utils.BaseCommon;
|
import com.dayu.baselibrary.utils.CRC8;
|
import com.dayu.baselibrary.utils.DateUtil;
|
import com.dayu.baselibrary.utils.MornyUtil;
|
import com.dayu.baselibrary.utils.TipUtil;
|
import com.dayu.baselibrary.view.ConfirmDialog;
|
import com.dayu.baselibrary.view.TitleBar;
|
import com.dayu.henanlibrary.card.CleanCardHN;
|
import com.dayu.henanlibrary.card.CleanUserCardHN;
|
import com.dayu.henanlibrary.card.ConfigurationPowerCardHN;
|
import com.dayu.henanlibrary.card.ConfigureDeviceRegistrationCrad;
|
import com.dayu.henanlibrary.card.DomainCard;
|
import com.dayu.henanlibrary.card.ManageCardHN;
|
import com.dayu.henanlibrary.card.RegisteredCardHN;
|
import com.dayu.henanlibrary.card.TestCardHN;
|
import com.dayu.henanlibrary.card.UserCardHN;
|
import com.dayu.henanlibrary.databinding.ActivityWriteTextHnBinding;
|
import com.dayu.henanlibrary.dbBean.AdminDataBean;
|
import com.dayu.henanlibrary.dbBean.ElectricPriceBean;
|
import com.dayu.henanlibrary.dbBean.RechargeBean;
|
import com.dayu.henanlibrary.dbBean.UserCardBean;
|
import com.dayu.henanlibrary.net.SocketCallBack;
|
import com.dayu.henanlibrary.net.SocketData;
|
import com.dayu.henanlibrary.net.SocketNet;
|
import com.dayu.henanlibrary.socketBean.BalanceSelecteRequestBean;
|
import com.dayu.henanlibrary.socketBean.RechargeRequestBean;
|
import com.dayu.henanlibrary.tools.NFCWriteHelper;
|
import com.dayu.henanlibrary.tools.NfcReadHelper;
|
import com.dayu.henanlibrary.tools.WriteCardUtils;
|
import com.dayu.henanlibrary.utils.CardCommon;
|
import com.dayu.henanlibrary.utils.DeviceNumberUtils;
|
import com.dayu.henanlibrary.utils.SocketUtil;
|
import com.dayu.henanlibrary.view.ProgressDialog;
|
import com.tencent.bugly.crashreport.CrashReport;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Calendar;
|
import java.util.List;
|
|
/**
|
* Copyright (C), 2023,
|
* Author: zuo
|
* Date: 2023-11-08 21:19
|
* Description: nfc写卡界面
|
*/
|
public class NFCWreatActivity extends HNBaseNfcActivity {
|
public static String TAG = "NFCWreatActivity";
|
|
boolean cleanFlag = false;
|
boolean userFlag = false;
|
boolean manageCardFlag = false;
|
boolean registeredFlag = false;
|
boolean administrativeCardFlag = false;
|
boolean cleanUserCardFlag = false;
|
|
boolean domainCrdFlag = false;
|
|
boolean testCardFlag = false;
|
|
boolean configDeviceRegiestFlag = false;
|
|
boolean configPowerFlag = false;
|
|
/**
|
* 是否不再验证用户直接写卡
|
*/
|
boolean isAgainWrite = false;
|
|
UserCardBean userCardBean;
|
|
String morny;
|
String userName;
|
AdminDataBean adminData;
|
RechargeBean rechargeBean;
|
Intent intent;
|
|
|
RegisteredCardHN registeredCard;
|
CleanUserCardHN cleanUserCard;
|
ManageCardHN manageCard;
|
DomainCard domainCard;
|
|
CleanCardHN cleanCard;
|
ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad;
|
TestCardHN testCard;
|
|
ConfigurationPowerCardHN configurationPowerCard;
|
//打印
|
|
public static NFCWreatActivity nfcWreatActivity;
|
/**
|
* 是否是用户卡,假如是用户卡的话需要检测卡片是否已经开过户,假如已开户则报错不能再写卡
|
*/
|
boolean isUser = false;//
|
|
//是否是充值过程
|
boolean isRecharge = false;
|
//充值通信是否完成
|
boolean rechargeIsOk = false;
|
ActivityWriteTextHnBinding binding;
|
ConfirmDialog confirmDialog;
|
|
@Override
|
public void onNfcBack(Intent intent) {
|
try {
|
this.intent = intent;
|
startAnim();
|
Log.i("NFCWreatActivity", "isUser:" + isUser);
|
if (isUser) {
|
checkHasUser();
|
} else if (isRecharge) {
|
if (rechargeIsOk) {
|
rechargeWrratCard();
|
} else {
|
Toast.makeText(this, "正在通信请稍后", Toast.LENGTH_SHORT).show();
|
}
|
|
} else {
|
saveData();
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
}
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
try {
|
binding = ActivityWriteTextHnBinding.inflate(LayoutInflater.from(this));
|
setContentView(binding.getRoot());
|
nfcWreatActivity = this;
|
setData();
|
titleBack();
|
getData();
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
}
|
|
|
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 = (UserCardHN) this.getIntent().getSerializableExtra("userCard");
|
}
|
if (this.getIntent().hasExtra("cleanCard")) {
|
cleanCard = (CleanCardHN) this.getIntent().getSerializableExtra("cleanCard");
|
binding.cardData.setText("制作清零卡");
|
}
|
if (this.getIntent().hasExtra("manageCard")) {
|
manageCard = (ManageCardHN) this.getIntent().getSerializableExtra("manageCard");
|
binding.cardData.setText("制作管理卡");
|
}
|
if (this.getIntent().hasExtra("registeredCard")) {
|
registeredCard = (RegisteredCardHN) 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 = (CleanUserCardHN) this.getIntent().getSerializableExtra("cleanUserCard");
|
binding.cardData.setText("制作删除全部用户卡");
|
}
|
if (this.getIntent().hasExtra("domainCard_xinxiang")) {
|
domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard_xinxiang");
|
binding.cardData.setText("制作设置新乡域名卡");
|
}
|
if (this.getIntent().hasExtra("domainCard_luyi")) {
|
domainCard = (DomainCard) this.getIntent().getSerializableExtra("domainCard_luyi");
|
binding.cardData.setText("制作设置鹿邑域名卡");
|
}
|
if (this.getIntent().hasExtra("testCard")) {
|
testCard = (TestCardHN) 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 = (ConfigurationPowerCardHN) 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) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
}
|
|
/**
|
* 检测是否是用户卡,假如是用户卡的话需要检测卡片是否已经开过户,假如已开户则报错不能再写卡假如是用户卡需要
|
*/
|
private void checkHasUser() {
|
|
String cardType = NfcReadHelper.getInstence(intent, this).getCradType();
|
Log.i("NFCWreatActivity", "cardType=" + cardType);
|
if (cardType.equals(CardCommon.USER_CARD_TYPE_1) ||
|
cardType.equals(CardCommon.USER_CARD_TYPE_2) ||
|
cardType.equals(CardCommon.USER_CARD_TYPE_3)
|
) {
|
binding.textView.setText("该卡已经写入用户信息,请更换卡片");
|
binding.textView.setTextColor(getResources().getColor(com.dayu.baselibrary.R.color.red));
|
} else if (cardType.equals(BaseCommon.CARD_TYPE_ERROR1)) {
|
TipUtil.show(NFCWreatActivity.this, "请勿移动卡片,读卡失败请重试!!");
|
} else if (cardType.equals(BaseCommon.CARD_TYPE_ERROR2)) {
|
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
|
|| 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);
|
}
|
if (manageCard != null) {
|
setmanageCard(intent, manageCard);
|
}
|
if (registeredCard != null) {
|
setRegisteredCard(intent, registeredCard);
|
}
|
if (cleanUserCard != null) {
|
setCleanUserCard(intent, cleanUserCard);
|
}
|
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) {
|
//用户卡
|
startDetailActivity(userCardBean.getUserName(), "启用");
|
} else if (!TextUtils.isEmpty(morny)) {
|
TipUtil.show(NFCWreatActivity.this, "充值成功", NFCWreatActivity.this::finish);
|
} else {
|
TipUtil.show(NFCWreatActivity.this, "写卡成功", NFCWreatActivity.this::finish);
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
} else {
|
TipUtil.show(NFCWreatActivity.this, "写卡失败");
|
}
|
stopAnim();
|
} else if (userCard == null && userCardBean != null) {
|
//补卡逻辑
|
selectBalance(userCardBean.getInitPeasantCode());
|
} else {
|
stopAnim();
|
TipUtil.show(this, "参数错误");
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
}
|
|
|
/**
|
* 打印机相关信息
|
*
|
* @param rechargeBean
|
*/
|
private void setPrinterData(RechargeBean rechargeBean) {
|
try {
|
List<String> data = new ArrayList<>();
|
if (rechargeBean != null) {
|
|
data.add("*****************************");
|
data.add("设备序列号:" + rechargeBean.getSerial());
|
data.add("用户名:" + rechargeBean.getUserName());
|
data.add("充值金额:" + rechargeBean.getMorny() + "元");
|
data.add("卡内余额:" + rechargeBean.getBalance() + "元");
|
data.add("日 期:" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2));
|
data.add("*****************************");
|
}
|
float size = 26;
|
try {
|
PrintAdater.getInstance().printText(data, size, true, false);
|
ShangMiAidlUtil.getInstance().print3Line();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
}
|
|
void startAnim() {
|
binding.avi.setVisibility(View.VISIBLE);
|
binding.avi.show();
|
// or avi.smoothToShow();
|
}
|
|
void stopAnim() {
|
binding.avi.hide();
|
// or avi.smoothToHide();
|
}
|
|
|
//充值上传(Socket)
|
private void recharge(String initPeasantCode, String name) {
|
try {
|
RechargeRequestBean rechargeRequestBean = new RechargeRequestBean();
|
rechargeRequestBean.setControl("01");
|
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(), "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);
|
} else if ("01".equalsIgnoreCase(state)) {
|
userCard.setState("01");
|
userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
|
NFCWreatActivity.this.finish();
|
TipUtil.show("充值报文错误-禁用");
|
} else if ("02".equalsIgnoreCase(state)) {
|
TipUtil.show("充值报文错误-隶属信息不符");
|
NFCWreatActivity.this.finish();
|
} else if ("03".equalsIgnoreCase(state)) {
|
TipUtil.show("充值报文错误-无此卡信息");
|
NFCWreatActivity.this.finish();
|
} else {
|
TipUtil.show("充值报文错误-其它");
|
NFCWreatActivity.this.finish();
|
}
|
} else {
|
//校验CRC错误
|
TipUtil.show(NFCWreatActivity.this, "充值报文错误校验CRC错误");
|
NFCWreatActivity.this.finish();
|
}
|
stopAnim();
|
}
|
|
@Override
|
public void onSocketError(int code, String msg) {
|
runOnUiThread(() -> {
|
stopAnim();
|
TipUtil.show(NFCWreatActivity.this, msg);
|
});
|
|
}
|
});
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
|
}
|
|
//往卡内写充值后的数据
|
private void rechargeWrratCard() {
|
UserCardHN 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 ManageCardHN manageCard) {
|
try {
|
manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(baseDao), 1, 0);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 制作清零卡
|
*
|
* @param intent
|
* @param clearOrInitCard
|
*/
|
private void setClean(Intent intent, final CleanCardHN clearOrInitCard) {
|
try {
|
cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(baseDao), 1, 0);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
|
/**
|
* 重新注册设备卡
|
*
|
* @param intent
|
* @param registeredCard
|
*/
|
private void setRegisteredCard(Intent intent, RegisteredCardHN registeredCard) {
|
try {
|
registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(baseDao), 1, 0);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 删除全部用户卡
|
*
|
* @param intent
|
* @param cleanUserCard
|
*/
|
private void setCleanUserCard(Intent intent, CleanUserCardHN cleanUserCard) {
|
try {
|
cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(baseDao), 1, 0);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 设置域名卡
|
*
|
* @param intent
|
* @param domainXinXiangCard
|
*/
|
private void setDomainCard(Intent intent, DomainCard domainXinXiangCard) {
|
try {
|
domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainXinXiangCard.getZeroByte(), 1, 0);
|
if (!domainCrdFlag) {
|
return;
|
}
|
domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainXinXiangCard.getOneByte(), 1, 1);
|
if (!domainCrdFlag) {
|
return;
|
}
|
domainCrdFlag = NFCWriteHelper.getInstence(intent, this).writeData(domainXinXiangCard.getTwoByte(), 1, 2);
|
} catch (Exception e) {
|
domainCrdFlag = false;
|
e.printStackTrace();
|
}
|
}
|
|
private void setTestCard(Intent intent, TestCardHN 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, ConfigurationPowerCardHN configurationPowerCard) {
|
try {
|
configPowerFlag = NFCWriteHelper.getInstence(intent, this).writeData(configurationPowerCard.toByte(baseDao), 1, 0);
|
} catch (Exception e) {
|
configPowerFlag = false;
|
e.printStackTrace();
|
}
|
}
|
|
|
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 = DeviceNumberUtils.getDeviceNumber();
|
requestBean.setInitCode(initCode);
|
requestBean.setInitPeasantCode(initPeasantCode);
|
requestBean.setXuLie(SocketUtil.getXuLie(this));
|
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();
|
String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]); //BCD码00启用 01禁用 02隶属信息不符 03无此卡信息 04其它s
|
if (userCard == null) {
|
userCard = new UserCardHN();
|
userCard.setRechargeTimes(0);
|
ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst();
|
if (electricPriceBean != null) {
|
userCard.setElectricityPrice(electricPriceBean.getPrice());
|
} else {
|
//默认是1元
|
userCard.setElectricityPrice(1.000f);
|
}
|
userCard.setSwipeNumber(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");
|
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)) {
|
stateText.append("无此卡信息");
|
} else if ("04".equals(state)) {
|
stateText.append("其它");
|
}
|
stopAnim();
|
binding.cardData.setText(stateText);
|
TipUtil.show(NFCWreatActivity.this, stateText.toString());
|
} catch (Exception e) {
|
e.printStackTrace();
|
stopAnim();
|
}
|
} else {
|
//校验CRC错误
|
TipUtil.show(NFCWreatActivity.this, "开卡报文校验CRC错误");
|
}
|
stopAnim();
|
|
}
|
|
@Override
|
public void onSocketError(int code, String 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;
|
}
|
|
private void titleBack() {
|
titleBar.setOnItemclickListner(TitleBar.ClickType_LEFT_IMAGE, new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
back();
|
}
|
});
|
}
|
}
|