左晓为主开发手持机充值管理机
zuoxiao
2024-09-27 feb7add1979c830e0d940286242a7c489f2f8f96
qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/ReadCardAcitivy.java
@@ -10,14 +10,19 @@
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;
@@ -31,14 +36,17 @@
 * Date: 2023-11-10 19:52
 * Description: 读卡界面
 */
public class ReadCardAcitivy extends BaseNfcActivity {
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);
@@ -57,31 +65,28 @@
                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 + "日");
            } else {
                redCardBinding.redRechargeDate.setText("本卡最后购水日期:无");
            }
            redCardBinding.redInitCode.setText(cardNumber);
            redCardBinding.redRechargeNumber.setText("本卡充值次数:" + userCard.getRechargeTimes() + "");
            redCardBinding.redTotalWater.setText("总用水量:" + userCard.getTotalWater());
            redCardBinding.redTotalPower.setText("总用电量:" + userCard.getTotalElectric());
            redCardBinding.redRemainderBlance.setText("剩余金额:" + MornyUtil.changeF2Y(userCard.getBalance()) + "元");
            redCardBinding.redRemainderWater.setText("剩余水量:" + userCard.getSurplusWater());
            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);
    }
    /**
@@ -92,26 +97,37 @@
        String cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber();
        String cardNumber = null;
        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 = UserCard.getBean(data);
                        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(), "启用", cardNumber);
                            setUserData(userName.getUserName(), state, cardNumber);
                        } else {
                            setUserData("未查询到用户名", "启用", cardNumber);
                            setUserData("未查询到用户名", state, cardNumber);
                        }
                    } else {
@@ -120,27 +136,64 @@
                    TipUtil.show("卡片识别错误,请重试!");
                }
                stopAnim();
                break;
            case CardCommon.MANAGE_CRAD:
            case CardCommon.MANAGE_CRAD://管理卡
                ManageCard manageCard = ManageCard.getBean(data);
                viweGone(false);
                redCardBinding.readCardTypeTV.setText("当前为管理卡");
                stopAnim();
                 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("当前为清零卡");
                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);
@@ -152,17 +205,14 @@
                } else {
                    TipUtil.show("卡片识别错误,请重试!");
                }
                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);
@@ -173,7 +223,6 @@
                } else {
                    TipUtil.show("卡片识别错误,请重试!");
                }
                stopAnim();
                break;
            case CardCommon.BLACK:
                viweGone(false);
@@ -201,7 +250,8 @@
                if (!data.isEmpty()) {
                    ElectricPriceCard electricPriceCard = ElectricPriceCard.getBean(data);
                    StringBuilder electricPriceBuilder = new StringBuilder();
                    electricPriceBuilder.append("电量单价:").append(electricPriceCard.getElectricPrice()).append("\n");
                    electricPriceBuilder.append("电量单价:").append(electricPriceCard.getElectricPrice());
                    electricPriceBuilder.append("元");
                    redCardBinding.readCardDataTV.setText(electricPriceBuilder.toString());
                } else {
                    TipUtil.show("卡片识别错误,请重试!");
@@ -209,10 +259,9 @@
                break;
            default:
                TipUtil.show(ReadCardAcitivy.this, "卡片无法识别");
                stopAnim();
                break;
        }
        stopAnim();
    }