左晓为主开发手持机充值管理机
zuoxiao
2024-05-09 b8f8323cc39091d3119101923251a0455da87f55
qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/ReadCardAcitivy.java
@@ -3,6 +3,7 @@
import android.content.Intent;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -15,11 +16,10 @@
import com.dayu.qihealonelibrary.card.ElectricPriceCard;
import com.dayu.qihealonelibrary.card.RegionCard;
import com.dayu.qihealonelibrary.card.UserCard;
import com.dayu.qihealonelibrary.databinding.ActivityRedCardBinding;
import com.dayu.qihealonelibrary.databinding.ActivityRedCardQhaBinding;
import com.dayu.qihealonelibrary.dbBean.UserCardBean;
import com.dayu.qihealonelibrary.tools.NfcReadHelper;
import com.dayu.qihealonelibrary.utils.MyCommon;
import com.dayu.qihealonelibrary.utils.CardCommon;
import com.dayu.qihealonelibrary.view.ProgressDialog;
import java.util.Calendar;
@@ -34,7 +34,7 @@
public class ReadCardAcitivy extends BaseNfcActivity {
    volatile UserCard userCard;
    ActivityRedCardBinding redCardBinding;
    ActivityRedCardQhaBinding redCardBinding;
    Intent intent;
@@ -42,32 +42,31 @@
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        redCardBinding = ActivityRedCardBinding.inflate(LayoutInflater.from(this));
        redCardBinding = ActivityRedCardQhaBinding.inflate(LayoutInflater.from(this));
        setContentView(redCardBinding.getRoot());
    }
    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.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());
        }
    }
@@ -87,115 +86,131 @@
     */
    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 MyCommon.USER_CARD_TYPE_1:
                                case MyCommon.USER_CARD_TYPE_2:
                                case MyCommon.USER_CARD_TYPE_3:
                                    userCard = UserCard.getBean(data);
                                    break;
                                case MyCommon.MANAGE_CRAD:
                                    viweGone(false);
                                    redCardBinding.readCardTypeTV.setText("当前为管理卡");
                                    stopAnim();
                                    break;
                                case MyCommon.CLEAN_CARD_TYPE:
                                    viweGone(false);
                                    redCardBinding.readCardTypeTV.setText("当前为清零卡");
                                    stopAnim();
                                    break;
                                case MyCommon.REGISTERED_CARD_TYPE:
                                    viweGone(false);
                                    redCardBinding.readCardTypeTV.setText("当前为重新注册设备卡");
                                    stopAnim();
                                    break;
                                case MyCommon.CLEAN_ALL_USER_CARD_TYPE:
                                    viweGone(false);
                                    redCardBinding.readCardTypeTV.setText("当前为删除全部用户卡");
                                    stopAnim();
                                    break;
                                case MyCommon.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 MyCommon.TEST_CARD_TYPE:
                                    viweGone(false);
                                    redCardBinding.readCardTypeTV.setText("当前为测试卡");
                                    stopAnim();
                                    break;
                                case MyCommon.CONFIGURATION_CARD_TYPE:
                                    viweGone(false);
                                    redCardBinding.readCardTypeTV.setText("当前为配置设备注册信息卡");
                                    stopAnim();
                                    break;
                                case MyCommon.CONFIGURATION_POWER_CARD_TYPE:
                                    viweGone(false);
                                    redCardBinding.readCardTypeTV.setText("当前配置水泵功率卡");
                                    ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(data.get(0));
                                    redCardBinding.readCardDataTV.setText(powerCard.getPower());
                                    stopAnim();
                                    break;
                                case MyCommon.BLACK:
                                    viweGone(false);
                                    redCardBinding.readCardTypeTV.setText("当前为黑卡");
                                    BlackCard blackCard = BlackCard.getBean(data);
                                    redCardBinding.readCardDataTV.setText("当前黑卡用户号为:" + blackCard.getBlackCard());
                                    break;
                                case MyCommon.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 MyCommon.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 cardNumber = null;
        String[] cardTypes = cardType.split(",");
        if (cardTypes != null && cardTypes.length == 2) {
            cardNumber = cardType.split(",")[0];
            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);
                        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, "卡片无法识别");
                            stopAnim();
                            setUserData("未查询到用户名", state, cardNumber);
                        }
                    } else {
                    }
                } else {
                    TipUtil.show("卡片识别错误,请重试!");
                }
                    @Override
                    public void error(int code) {
                        switch (code) {
                            case MyCommon.ERROR_MOVE:
                                stopAnim();
                                TipUtil.show("连接中断,请重新贴合卡片");
                                break;
                            default:
                                stopAnim();
                                TipUtil.show("卡片识别错误,请重试!");
                        }
                    }
                });
                break;
            case CardCommon.MANAGE_CRAD:
                viweGone(false);
                redCardBinding.readCardTypeTV.setText("当前为管理卡");
                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();
    }