左晓为主开发手持机充值管理机
zuoxiao
2023-11-21 fc6048b630901058ccd90529e32e031e612b8384
app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -9,13 +9,20 @@
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.DeviceNumber;
import com.dayu.recharge.dbBean.ElectricPriceBean;
import com.dayu.recharge.dbBean.RechargeBean;
import com.dayu.recharge.dbBean.UserCardBean;
import com.dayu.recharge.net.SocketCallBack;
@@ -30,6 +37,7 @@
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.SocketUtil;
import com.dayu.recharge.utils.ToastUtil;
@@ -41,6 +49,12 @@
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 {
@@ -65,12 +79,18 @@
    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;
    UserCardBean userCardBean;
    CleanCard cleanCard;
    String morny;
    AdminDataBean adminData;
    RechargeBean rechargeBean;
@@ -79,7 +99,15 @@
    RegisteredCard registeredCard;
    CleanUserCard cleanUserCard;
    volatile UserCard userCard;
    ManageCard manageCard;
    DomainCard domainCard;
    CleanCard cleanCard;
    ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad;
    TestCard testCard;
    ConfigurationPowerCard configurationPowerCard;
    //打印
    MyApplication baseApp;
@@ -115,20 +143,44 @@
            }
            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");
            }
            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")) {
                morny = this.getIntent().getStringExtra("morny");
                binding.cardData.setText("充值金额:" + morny + "元");
            }
            try {
                adminData = baseDao.adminDao().findFirst();
            } catch (Exception e) {
@@ -166,9 +218,9 @@
                        }
                        @Override
                        public void error() {
                        public void error(int code) {
                            Message message = new Message();
                            message.what = ERROR;
                            message.what = code;
                            handler.sendMessage(message);
                        }
                    });
@@ -182,7 +234,11 @@
    private void saveData() {
        try {
            startAnim();
            if (userCard != null || cleanCard != null || manageCard != null || registeredCard != null || cleanUserCard != null) {
            if (userCard != null || cleanCard != null || manageCard != null
                    || registeredCard != null || cleanUserCard != null
                    || domainCard != null || testCard != null
                    || configureDeviceRegistrationCrad != null
                    || configurationPowerCard != null) {
                if (userCard != null) {
                    setUser(intent, userCard);
                }
@@ -198,11 +254,22 @@
                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) {
@@ -227,6 +294,9 @@
                stopAnim();
            } else if (!TextUtils.isEmpty(morny)) {
                readAllData(intent);
            } else if (userCard == null && userCardBean != null) {
                //补卡逻辑
                selectBalance(userCardBean.getInitPeasantCode());
            } else {
                stopAnim();
                ToastUtil.show(this, "参数错误");
@@ -276,7 +346,7 @@
                        }
                        @Override
                        public void error() {
                        public void error(int code) {
                            Message message = new Message();
                            message.what = ERROR;
                            handler.sendMessage(message);
@@ -323,7 +393,7 @@
            StringBuffer data = new StringBuffer();
            if (rechargeBean != null) {
                data.append("*****************************" + "\n");
                data.append("  农业水价综合改革充值系统\n\n");
                data.append(getResources().getString(R.string.login_title) + "\n");
                data.append("设备序列号:" + rechargeBean.getSerial() + "\n");
                data.append("用户名:" + rechargeBean.getUserName() + "\n");
                //            data.append("户  号:" + rechargeBean.getUserNum() + "\n");
@@ -360,7 +430,7 @@
        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");
@@ -456,12 +526,18 @@
                userFlag = flag;
            }
        });
        if (!userFlag) {
            return;
        }
        NFCWriteHelper.getInstence(intent).writeData(userCard.getOneBytes(), 1, 1, new NFCWriteHelper.NFCCallback() {
            @Override
            public void isSusses(boolean flag) {
                userFlag = flag;
            }
        });
        if (!userFlag) {
            return;
        }
        NFCWriteHelper.getInstence(intent).writeData(userCard.getTwoBytes(), 1, 2, new NFCWriteHelper.NFCCallback() {
            @Override
            public void isSusses(boolean flag) {
@@ -485,6 +561,12 @@
        });
    }
    /**
     * 删除全部用户卡
     *
     * @param intent
     * @param cleanUserCard
     */
    private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) {
        NFCWriteHelper.getInstence(intent).writeData(cleanUserCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
            @Override
@@ -495,6 +577,80 @@
    }
    /**
     * 设置域名卡
     *
     * @param intent
     * @param domainCard
     */
    private void setDomainCard(Intent intent, DomainCard domainCard) {
        try {
            NFCWriteHelper.getInstence(intent).writeData(domainCard.getZeroByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
                @Override
                public void isSusses(boolean flag) {
                    domainCrdFlag = flag;
                }
            });
            if (!domainCrdFlag) {
                return;
            }
            NFCWriteHelper.getInstence(intent).writeData(domainCard.getOneByte(), 1, 1, new NFCWriteHelper.NFCCallback() {
                @Override
                public void isSusses(boolean flag) {
                    domainCrdFlag = flag;
                }
            });
            if (!domainCrdFlag) {
                return;
            }
            NFCWriteHelper.getInstence(intent).writeData(domainCard.getTwoByte(), 1, 2, new NFCWriteHelper.NFCCallback() {
                @Override
                public void isSusses(boolean flag) {
                    domainCrdFlag = flag;
                }
            });
        } catch (Exception e) {
            domainCrdFlag = false;
            throw new RuntimeException(e);
        }
    }
    private void setTestCard(Intent intent, TestCard testCard) {
        NFCWriteHelper.getInstence(intent).writeData(testCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
            @Override
            public void isSusses(boolean flag) {
                testCardFlag = flag;
            }
        });
    }
    private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) {
        NFCWriteHelper.getInstence(intent).writeData(configureDeviceRegistrationCrad.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
            @Override
            public void isSusses(boolean flag) {
                configDeviceRegiestFlag = flag;
            }
        });
    }
    private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) {
        try {
            NFCWriteHelper.getInstence(intent).writeData(configurationPowerCard.toByte(), 1, 0, new NFCWriteHelper.NFCCallback() {
                @Override
                public void isSusses(boolean flag) {
                    configPowerFlag = flag;
                }
            });
        } catch (Exception e) {
            configPowerFlag = false;
            throw new RuntimeException(e);
        }
    }
    /**
     * 查询余额
     *
     * @param initPeasantCode 农户注册编号
     */
    private void selectBalance(String initPeasantCode) {
@@ -503,7 +659,7 @@
            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));
@@ -518,6 +674,24 @@
                            stateText = new StringBuffer();
                            stateText.append("状    态:");
                            String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]);  //BCD码00启用 01禁用 02隶属信息不符 03无此卡信息 04其它s
                            if (userCard == null) {
                                userCard = new UserCard();
                                userCard.setRechargeTimes(0);
                                ElectricPriceBean electricPriceBean = baseDao.electricPriceDao().findFirst();
                                if (electricPriceBean != null) {
                                    userCard.setElectricityPrice(electricPriceBean.getPrice());
                                } else {
                                    //默认是1元
                                    userCard.setElectricityPrice(1.000f);
                                }
                                userCard.setSwipeNumber((short) 0);
                                userCard.setState("00");
                                userCard.setBalance(0);
                                userCard.setAddressCode(adminData.getAddressCode());
                                userCard.setInitPeasantCode(initPeasantCode);
                            }
                            if ("00".equals(state)) {
                                //只有启动状态才能充值
                                //金额
@@ -526,30 +700,42 @@
                                //姓名
                                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());
                                } else {
                                    rechargeBean.setUserName(name);
                                }
                                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();
                                userCard.setBalance(balance);
                                //与socket服务器通信后进行后续操作
                                if (!TextUtils.isEmpty(morny)) {
                                    //充值
                                    rechargeBean = new RechargeBean();
                                    rechargeBean.setDate(System.currentTimeMillis());
                                    rechargeBean.setMorny(morny);
                                    if (userCardBean != null) {
                                        rechargeBean.setUserName(userCardBean.getUserName());
                                    } else {
                                        rechargeBean.setUserName(name);
                                    }
                                    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.setRechargeDate(Calendar.getInstance());
                                    rechargeBean.setBalance(MornyUtil.changeF2Y(balance + MornyUtil.changeY2F(morny)) + "");
                                    rechargeBean.setUserId(userId);
                                    recharge(initPeasantCode);
                                } else {
                                    //补卡逻辑
                                    setUser(intent, userCard);
                                    if (userFlag) {
                                        NFCWreatActivity.this.finish();
                                        ToastUtil.show(NFCWreatActivity.this, "补卡成功");
                                    }
                                }
                                rechargeBean.setSerial(adminData.getSerial());
                                userCard.setBalance(balance);
                                userCard.setRechargeDate(Calendar.getInstance());
                                rechargeBean.setBalance(MornyUtil.changeF2Y(balance) + "");
                                rechargeBean.setUserId(userId);
                                //与socket服务器通信后进行后续操作
                                recharge(initPeasantCode);
                                stateText.append("启用");
                                return;
                            } else if ("01".equals(state)) {