左晓为主开发手持机充值管理机
zuoxiao
2024-08-09 9450bcb197c2de53982368d5c2059b31abed3b87
qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/ReadCardAcitivy.java
@@ -11,6 +11,7 @@
import com.dayu.baselibrary.utils.MornyUtil;
import com.dayu.baselibrary.utils.TipUtil;
import com.dayu.baselibrary.view.ConfirmDialog;
import com.dayu.qiheonlinelibrary.bean.CardInfoResult;
import com.dayu.qiheonlinelibrary.card.BlackCard;
import com.dayu.qiheonlinelibrary.card.ConfigurationPowerCard;
import com.dayu.qiheonlinelibrary.card.DomainCard;
@@ -22,6 +23,9 @@
import com.dayu.qiheonlinelibrary.databinding.ActivityRedCardQhlBinding;
import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
import com.dayu.qiheonlinelibrary.dbBean.UserCardBean;
import com.dayu.qiheonlinelibrary.net.ApiManager;
import com.dayu.qiheonlinelibrary.net.BaseResponse;
import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
import com.dayu.qiheonlinelibrary.tools.NFCWriteHelper;
import com.dayu.qiheonlinelibrary.tools.NfcReadHelper;
import com.dayu.qiheonlinelibrary.utils.CardCommon;
@@ -29,7 +33,9 @@
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Copyright (C), 2023,
@@ -48,35 +54,12 @@
    AdminDataBean adminData;
    String cardNumber;
    String userCardStr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        redCardBinding = ActivityRedCardQhlBinding.inflate(LayoutInflater.from(this));
        setContentView(redCardBinding.getRoot());
    }
    private void setUserData(String userName, String statu, String cardNumber) {
        viweGone(true);
        redCardBinding.redName.setText("用户姓名:" + userName);
        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);
                redCardBinding.redRechargeDate.setText("本卡最后购水日期:" + year + "年" + month + "月" + day + "日");
            } else {
                redCardBinding.redRechargeDate.setText("本卡最后购水日期:无");
            }
            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()) + " 吨");
        }
    }
@@ -102,8 +85,6 @@
        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();
@@ -123,13 +104,7 @@
                if (!data.isEmpty()) {
                    if (!TextUtils.isEmpty(cardNumber)) {
                        userCard = 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 {
                            setUserData("未查询到用户名", state, cardNumber);
                        }
                        getUserInfoAndCardInfo(cardNumber);
                    } else {
                    }
@@ -141,14 +116,12 @@
            case CardCommon.MANAGE_CRAD://管理卡
                ManageCard manageCard = ManageCard.getBean(data);
                viweGone(false);
                 userCardStr = manageCard.getUserCard().toUpperCase();
                userCardStr = HexUtil.spaceHex(userCardStr);
                userCardStr = HexUtil.HighLowHex(userCardStr);
                userCardStr = manageCard.getUserCard().toUpperCase();
                redCardBinding.readCardTypeTV.setText("当前为管理卡" + "\n\n"
                        + "原始卡号:" + userCardStr);
                if (manageCard.getType()==(byte) 1){
                if (manageCard.getType() == (byte) 1) {
                    //当01时将1扇区0块原管理卡信息改成用户卡内容
                     confirmDialog=new ConfirmDialog(this, "是否确认补卡,该卡将成为新用户卡?并且不要移动卡片", new View.OnClickListener() {
                    confirmDialog = new ConfirmDialog(this, "是否确认补卡,该卡将成为新用户卡?并且不要移动卡片", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            ProgressDialog.show(ReadCardAcitivy.this);
@@ -162,21 +135,21 @@
                                    baseDao.userCardDao().update(userName);
                                }
                                NFCWriteHelper nfcWriteHelper=   NFCWriteHelper.getInstence(intent,ReadCardAcitivy.this);
                                NFCWriteHelper nfcWriteHelper = NFCWriteHelper.getInstence(intent, ReadCardAcitivy.this);
                                adminData = baseDao.adminDao().findFirst();
                                ManagerToUserCard managerToUserCard=new ManagerToUserCard();
                                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)){
                                if (nfcWriteHelper.writeData(managerToUserCard.getZeroBytes(), 1, 0)) {
                                    TipUtil.show(ReadCardAcitivy.this, "补卡成功", () -> ReadCardAcitivy.this.finish());
                                }else {
                                } else {
                                    TipUtil.show(ReadCardAcitivy.this, "补卡失败,请重新刷卡", () -> ReadCardAcitivy.this.finish());
                                }
                            } catch (Exception e) {
                               e.printStackTrace();
                                e.printStackTrace();
                            }
                            stopAnim();
                        }
@@ -237,8 +210,7 @@
                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");
                    stringBuilder.append("区域号:").append(regionCard.getArerNumber());
                    redCardBinding.readCardDataTV.setText(stringBuilder.toString());
                } else {
                    TipUtil.show("卡片识别错误,请重试!");
@@ -285,5 +257,48 @@
        // or avi.smoothToHide();
    }
    /**
     * 获取卡信息和用户信息
     *
     * @param iccardCode
     */
    public void getUserInfoAndCardInfo(String iccardCode) {
        Map<String, Object> data = new HashMap<>();
        //ic卡信息id
        data.put("iccardNum", iccardCode);
        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/peasant/getIccardInfoVoByCardCode", CardInfoResult.class, data, new SubscriberListener<BaseResponse<CardInfoResult>>() {
            @Override
            public void onNext(BaseResponse<CardInfoResult> t) {
                String state = "";
                if (t.isSuccess()) {
                    setUserData(t.getData());
                }
            }
        });
    }
    private void setUserData(CardInfoResult cardInfoResult) {
        viweGone(true);
        if (cardInfoResult != null) {
            redCardBinding.redName.setText(cardInfoResult.getPeasantName());
            redCardBinding.redCardCode.setText(cardNumber);
            redCardBinding.redUserCode.setText(cardInfoResult.getIccardCode());
            redCardBinding.redBlance.setText(MornyUtil.changeF2Y(userCard.getBalance())+"元");
            redCardBinding.redElectric.setText(MornyUtil.changeF2Y(userCard.getSurplusElecticity())+"度");
            redCardBinding.redTotalMorny.setText(MornyUtil.changeF2Y(userCard.getTotalMorny())+"元");
            redCardBinding.redPhone.setText(cardInfoResult.getPeasantPhone());
            redCardBinding.redCodeId.setText(cardInfoResult.getPeasantIdNumber());
            if (cardInfoResult.getIccardStatus() == 0) {
                redCardBinding.redStatu.setText("正常");
            } else if (cardInfoResult.getIccardStatus() == 1) {
                redCardBinding.redStatu.setText("已注销");
            } else {
                redCardBinding.redStatu.setText("已挂失");
            }
        }
    }
}