左晓为主开发手持机充值管理机
app/src/main/java/com/dayu/recharge/activity/NFCWreatActivity.java
@@ -1,10 +1,13 @@
package com.dayu.recharge.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.recharge.MyApplication;
@@ -40,6 +43,9 @@
import com.dayu.recharge.utils.MyCommon;
import com.dayu.recharge.utils.SocketUtil;
import com.dayu.recharge.utils.TipUtil;
import com.dayu.recharge.view.ConfirmDialog;
import com.dayu.recharge.view.ProgressDialog;
import com.dayu.recharge.view.TitleBar;
import com.tencent.bugly.crashreport.CrashReport;
import java.util.Arrays;
@@ -52,7 +58,7 @@
 * Description: nfc写卡界面
 */
public class NFCWreatActivity extends BaseNfcActivity {
    public static String TAG = "NFCWreatActivity";
    boolean cleanFlag = false;
    boolean userFlag = false;
@@ -69,8 +75,12 @@
    boolean configPowerFlag = false;
    /**
     * 是否不再验证用户直接写卡
     */
    boolean isAgainWrite = false;
    UserCardBean userCardBean;
    UserCard olduserCard;
    String morny;
    String userName;
@@ -103,6 +113,7 @@
    //充值通信是否完成
    boolean rechargeIsOk = false;
    ActivityWriteTextBinding binding;
    ConfirmDialog confirmDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -111,6 +122,7 @@
            binding = ActivityWriteTextBinding.inflate(LayoutInflater.from(this));
            setContentView(binding.getRoot());
            nfcWreatActivity = this;
            setData();
            getData();
            baseApp = (MyApplication) getApplication();
        } catch (Exception e) {
@@ -120,6 +132,55 @@
    }
    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")) {
@@ -168,7 +229,7 @@
                userName = this.getIntent().getStringExtra("userName");
                binding.cardData.setText("充值金额:" + morny + "元");
                // 充值逻辑
                recharge(userCard.getInitPeasantCode(), userName, "启用");
                recharge(userCard.getInitPeasantCode(), userName);
            }
            try {
@@ -198,6 +259,8 @@
            binding.textView.setTextColor(getResources().getColor(R.color.red));
        } else if (cardType.equals("-1")) {
            TipUtil.show(NFCWreatActivity.this, "请勿移动卡片,读卡失败请重试!!");
        } else if (cardType.equals("-2")) {
            TipUtil.show(NFCWreatActivity.this, "读卡失败,请检查卡是否是用户卡");
        } else {
            Log.i("NFCWreatActivity", "olduserCard!=null  saveData");
            saveData();
@@ -216,7 +279,6 @@
                    || configureDeviceRegistrationCrad != null
                    || configurationPowerCard != null) {
                if (userCard != null && TextUtils.isEmpty(morny)) {
                    userFlag = WriteCardUtils.setUser(intent, userCard, this);
                }
                if (cleanCard != null) {
@@ -249,9 +311,9 @@
                            //用户卡
                            startDetailActivity(userCardBean.getUserName(), "启用");
                        } else if (!TextUtils.isEmpty(morny)) {
                            TipUtil.show(NFCWreatActivity.this, "充值成功", () -> NFCWreatActivity.this.finish());
                            TipUtil.show(NFCWreatActivity.this, "充值成功", NFCWreatActivity.this::finish);
                        } else {
                            TipUtil.show(NFCWreatActivity.this, "写卡成功", () -> NFCWreatActivity.this.finish());
                            TipUtil.show(NFCWreatActivity.this, "写卡成功", NFCWreatActivity.this::finish);
                        }
                    } catch (Exception e) {
@@ -311,13 +373,13 @@
            StringBuffer data = new StringBuffer();
            if (rechargeBean != null) {
                data.append("*****************************" + "\n");
                data.append(getResources().getString(R.string.login_title) + "\n");
                data.append("设备序列号:" + rechargeBean.getSerial() + "\n");
                data.append("用户名:" + rechargeBean.getUserName() + "\n");
                data.append(getResources().getString(R.string.login_title)).append("\n");
                data.append("设备序列号:").append(rechargeBean.getSerial()).append("\n");
                data.append("用户名:").append(rechargeBean.getUserName()).append("\n");
                //            data.append("户  号:" + rechargeBean.getUserNum() + "\n");
                data.append("充值金额:" + rechargeBean.getMorny() + "元" + "\n");
                data.append("卡内余额:" + rechargeBean.getBalance() + "元" + "\n");
                data.append("日  期:" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2) + "\n\n");
                data.append("充值金额:").append(rechargeBean.getMorny()).append("元").append("\n");
                data.append("卡内余额:").append(rechargeBean.getBalance()).append("元").append("\n");
                data.append("日  期:").append(DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2)).append("\n\n");
                data.append("*****************************");
            }
@@ -333,6 +395,7 @@
    }
    void startAnim() {
        binding.avi.setVisibility(View.VISIBLE);
        binding.avi.show();
        // or avi.smoothToShow();
    }
@@ -344,7 +407,7 @@
    //充值上传(Socket)
    private void recharge(String initPeasantCode, String name, String statu) {
    private void recharge(String initPeasantCode, String name) {
        try {
            RechargeRequestBean rechargeRequestBean = new RechargeRequestBean();
            rechargeRequestBean.setControl("01");
@@ -356,7 +419,7 @@
            rechargeRequestBean.setBalance(morny);
            rechargeRequestBean.setOrderId(SocketUtil.getOrderId(NFCWreatActivity.this));
            SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(), new SocketCallBack() {
            SocketNet.getInstance().sendTestMessage(rechargeRequestBean.pack(),"95", new SocketCallBack() {
                @Override
                public void onSocketResponse(SocketData readData) {
@@ -374,7 +437,7 @@
                        //00启用01禁用02隶属信息不符03无此卡信息04其它
                        if ("00".equalsIgnoreCase(state)) {
                            rechargeIsOk = true;
                            binding.cardData.setText("充值通信完成,请帖卡充值");
                            binding.cardData.setText("充值"+morny+"元通信完成,请帖卡写卡");
                            rechargeBean = new RechargeBean();
                            rechargeBean.setDate(System.currentTimeMillis());
                            rechargeBean.setMorny(morny);
@@ -382,6 +445,7 @@
                            rechargeBean.setSerial(adminData.getSerial());
                            userCard.setRechargeDate(Calendar.getInstance());
                            userCard.setBalance(balance);
                            rechargeBean.setBalance(MornyUtil.changeF2Y(balance));
                            rechargeBean.setInitPeasantCode(initPeasantCode);
                            rechargeBean.setOrderID(orderId);
@@ -416,8 +480,11 @@
                @Override
                public void onSocketError(int code, String msg) {
                    stopAnim();
                    TipUtil.show(NFCWreatActivity.this, msg);
                    runOnUiThread(() -> {
                        stopAnim();
                        TipUtil.show(NFCWreatActivity.this, msg);
                    });
                }
            });
        } catch (Exception e) {
@@ -432,7 +499,7 @@
        UserCard userCardold = NfcReadHelper.getInstence(intent, this).getUserCardData();
        if (userCardold != null) {
            //判断是否充值的是一个卡
            if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode())) {
            if (userCard.getInitPeasantCode().equals(userCardold.getInitPeasantCode()) || isAgainWrite) {
                userCard.setState("00");
                userFlag = WriteCardUtils.setUser(intent, userCard, this);
                //   打印相关
@@ -440,18 +507,18 @@
                    setPrinterData(rechargeBean);
                    startDetailActivity(userName, "启用");
                } else {
                    TipUtil.show(NFCWreatActivity.this, "写卡失败,请重新再试");
                    isAgainWrite = true;
                    TipUtil.show(NFCWreatActivity.this, "写卡失败,请重新贴卡");
                }
            } else {
                TipUtil.show(NFCWreatActivity.this, "读取的卡和充值的卡不一致");
            }
        } else {
        }
        stopAnim();
    }
    private void setmanageCard(Intent intent, final ManageCard manageCard) {
        manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(), 1, 0);
        manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(baseDao), 1, 0);
    }
    /**
@@ -461,7 +528,7 @@
     * @param clearOrInitCard
     */
    private void setClean(Intent intent, final CleanCard clearOrInitCard) {
        cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(), 1, 0);
        cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(baseDao), 1, 0);
    }
@@ -472,7 +539,7 @@
     * @param registeredCard
     */
    private void setRegisteredCard(Intent intent, RegisteredCard registeredCard) {
        registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(), 1, 0);
        registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(baseDao), 1, 0);
    }
    /**
@@ -482,7 +549,7 @@
     * @param cleanUserCard
     */
    private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) {
        cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(), 1, 0);
        cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(baseDao), 1, 0);
    }
    /**
@@ -509,17 +576,17 @@
    }
    private void setTestCard(Intent intent, TestCard testCard) {
        testCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(testCard.toByte(), 1, 0);
        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(), 1, 0);
        configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent, this).writeData(configureDeviceRegistrationCrad.toByte(baseDao), 1, 0);
    }
    private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) {
        try {
            configPowerFlag = NFCWriteHelper.getInstence(intent, this).writeData(configurationPowerCard.toByte(), 1, 0);
            configPowerFlag = NFCWriteHelper.getInstence(intent, this).writeData(configurationPowerCard.toByte(baseDao), 1, 0);
        } catch (Exception e) {
            configPowerFlag = false;
            throw new RuntimeException(e);
@@ -536,13 +603,7 @@
            detail.putExtra("morny", morny);
        }
        startActivity(detail);
        if (NewCardActivity.newCardActivity != null) {
            NewCardActivity.newCardActivity.finish();
        }
        if (RechargeActivity.rechargeActivity != null) {
            RechargeActivity.rechargeActivity.finish();
        }
        NFCWreatActivity.nfcWreatActivity.finish();
        myFinish();
    }
    /**
@@ -551,8 +612,9 @@
     * @param initPeasantCode 农户注册编号
     */
    private void selectBalance(String initPeasantCode) {
        Log.i(TAG, "补卡查询余额:农户注册编号 " + initPeasantCode);
        try {
            startAnim();
            BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean();
            requestBean.setAFN("94");
            requestBean.setControl("01");
@@ -560,7 +622,7 @@
            requestBean.setInitCode(initCode);
            requestBean.setInitPeasantCode(initPeasantCode);
            requestBean.setXuLie(SocketUtil.getXuLie(this));
            SocketNet.getInstance().sendTestMessage(requestBean.pack(), new SocketCallBack() {
            SocketNet.getInstance().sendTestMessage(requestBean.pack(), "94",new SocketCallBack() {
                @Override
                public void onSocketResponse(SocketData readData) {
                    if (CRC8.isCRC8(readData.getOriginDataBytes())) {
@@ -598,12 +660,7 @@
                                //补卡逻辑
                                userFlag = WriteCardUtils.setUser(intent, userCard, NFCWreatActivity.this);
                                if (userFlag) {
                                    TipUtil.show(NFCWreatActivity.this, "补卡成功", new TipUtil.TipListener() {
                                        @Override
                                        public void onCancle() {
                                            NFCWreatActivity.this.finish();
                                        }
                                    });
                                    TipUtil.show(NFCWreatActivity.this, "补卡成功", () -> NFCWreatActivity.this.finish());
                                }
                                return;
                            } else if ("01".equals(state)) {
@@ -631,23 +688,31 @@
                        //校验CRC错误
                        TipUtil.show(NFCWreatActivity.this, "开卡报文校验CRC错误");
                    }
                    stopAnim();
                }
                @Override
                public void onSocketError(int code, String msg) {
                    stopAnim();
                    TipUtil.show(NFCWreatActivity.this, 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;
    }
}