左晓为主开发手持机充值管理机
zuoxiao
2024-03-26 ebc06a3ae3a42bd6ac1359a59c55d5e6f1a0e2f0
app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java
@@ -10,10 +10,23 @@
import android.widget.EditText;
import com.dayu.recharge.databinding.ActivityRechargeBinding;
import com.dayu.recharge.dbBean.AdminDataBean;
import com.dayu.recharge.net.SocketCallBack;
import com.dayu.recharge.net.SocketData;
import com.dayu.recharge.net.SocketNet;
import com.dayu.recharge.socketBean.BalanceSelecteRequestBean;
import com.dayu.recharge.tools.BcdUtil;
import com.dayu.recharge.tools.NfcReadHelper;
import com.dayu.recharge.tools.WriteCardUtils;
import com.dayu.recharge.utils.CRC8;
import com.dayu.recharge.utils.DeviceNumberUtils;
import com.dayu.recharge.utils.ToastUtil;
import com.dayu.recharge.utils.WSHelper;
import com.dayu.recharge.utils.MornyUtil;
import com.dayu.recharge.utils.SocketUtil;
import com.dayu.recharge.utils.TipUtil;
import com.dayu.recharge.view.ProgressDialog;
import com.tencent.bugly.crashreport.CrashReport;
import java.util.Arrays;
/**
@@ -22,11 +35,16 @@
 * Date: 2023-11-5 09:52
 * Description: 充值界面
 */
public class RechargeActivity extends BaseActivity {
public class RechargeActivity extends BaseNfcActivity {
    Intent intent;
    boolean userFlag;
    ActivityRechargeBinding binding;
    public static RechargeActivity rechargeActivity;
    AdminDataBean adminData;
    String userName;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -43,28 +61,54 @@
        }
    }
    public void onNewIntent(Intent intent) {
        try {
            this.intent = intent;
            userCard = NfcReadHelper.getInstence(intent, this).getUserCardData();
            if (userCard != null) {
                ProgressDialog.show(this);
                selectBalance(userCard.getInitPeasantCode());
            } else {
                TipUtil.show(RechargeActivity.this, "卡片读取失败");
            }
//            readAllData(intent);
        } catch (Exception e) {
            e.printStackTrace();
            CrashReport.postCatchedException(e);
        }
        super.onNewIntent(intent);
    }
    private void initView() {
        binding.rechargeRegistBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String morny = binding.rechargeWater.getText().toString();
                if (!TextUtils.isEmpty(morny)) {
                    String initCode = DeviceNumberUtils.getDeviceNumber();
                    if (TextUtils.isEmpty(initCode)) {
                        ToastUtil.show(RechargeActivity.this, "设备注册号为空,请先设置IP和管理员地址");
//                return;
                    }
                    Intent intent = new Intent(RechargeActivity.this, NFCWreatActivity.class);
                    intent.putExtra("morny", morny);
                    startActivity(intent);
                } else {
                    ToastUtil.show(RechargeActivity.this, "请输入充值金额(元)");
        try {
            adminData = baseDao.adminDao().findFirst();
        } catch (Exception e) {
            e.printStackTrace();
            CrashReport.postCatchedException(e);
        }
        binding.rechargeRegistBtn.setOnClickListener(v -> {
            String morny = binding.rechargeWater.getText().toString();
            if (!TextUtils.isEmpty(morny)) {
                String initCode = DeviceNumberUtils.getDeviceNumber();
                if (TextUtils.isEmpty(initCode)) {
                    TipUtil.show(RechargeActivity.this, "设备注册号为空,请先设置IP和管理员地址");
                    return;
                }
                Intent intent = new Intent(RechargeActivity.this, NFCWreatActivity.class);
                intent.putExtra("morny", morny);
                intent.putExtra("userName", userName);
                intent.putExtra("userCard", userCard);
                startActivity(intent);
            } else {
                TipUtil.show(RechargeActivity.this, "请输入充值金额(元)");
            }
        });
    }
    //校验金额
    public static void setPricePoint(final EditText editText) {
        editText.addTextChangedListener(new TextWatcher() {
            @Override
@@ -89,7 +133,6 @@
                    if (!s.toString().substring(1, 2).equals(".")) {
                        editText.setText(s.subSequence(0, 1));
                        editText.setSelection(1);
                        return;
                    }
                }
            }
@@ -110,5 +153,99 @@
    }
    /**
     * 查询余额
     *
     * @param initPeasantCode 农户注册编号
     */
    private void selectBalance(String initPeasantCode) {
        try {
            BalanceSelecteRequestBean requestBean = new BalanceSelecteRequestBean();
            requestBean.setAFN("94");
            requestBean.setControl("01");
            String initCode = DeviceNumberUtils.getDeviceNumber();
            requestBean.setInitCode(initCode);
            requestBean.setInitPeasantCode(initPeasantCode);
            requestBean.setXuLie(SocketUtil.getXuLie(this));
            SocketNet.getInstance().sendTestMessage(requestBean.pack(),"94", new SocketCallBack() {
                @Override
                public void onSocketResponse(SocketData readData) {
                    ProgressDialog.dismiss();
                    if (CRC8.isCRC8(readData.getOriginDataBytes())) {
                        StringBuffer stateText ;
                        try {
                            stateText = new StringBuffer();
                            String state = BcdUtil.bcdToStr(readData.getBodyBytes()[2]);  //BCD码00启用 01禁用 02隶属信息不符 03无此卡信息 04其它s
                            int balance = 0;
                            try {
                                //只有启动状态才能充值
                                //金额
                                byte[] blanceByte = Arrays.copyOfRange(readData.getBodyBytes(), 3, 7);
                                balance = SocketUtil.get16to10LowHigh(blanceByte);
                                //姓名
                                byte[] nameByte = Arrays.copyOfRange(readData.getBodyBytes(), 7, 19);
                                userName = SocketUtil.fromHexString(SocketUtil.bytesToHexClean0(nameByte));
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                            binding.rechargeLL.setVisibility(View.VISIBLE);
                            binding.rechargeRegistBtn.setVisibility(View.VISIBLE);
                            binding.rechargeReadLL.setVisibility(View.GONE);
                            binding.rechargeTextLL.setVisibility(View.VISIBLE);
                            binding.userName.setText(userName);
                            binding.redRemainderBlance.setText(MornyUtil.changeF2Y(balance));
                            binding.redStatu.setText(stateText.toString());
                            binding.redInitCode.setText(initPeasantCode);
                            if ("00".equals(state)) {
                                binding.rechargeRegistBtn.setVisibility(View.VISIBLE);
                                stateText.append("启用");
                                userCard.setState("00");
                                userCard.setBalance(balance);
                                binding.redStatu.setText(stateText.toString());
                                return;
                            } else if ("01".equals(state)) {
                                stateText.append("该卡已被禁用");
                                userCard.setState("01");
                                userCard.setBalance(balance);
                                userFlag = WriteCardUtils.setUser(intent, userCard, RechargeActivity.this);
                            } else if ("02".equals(state)) {
                                stateText.append("隶属信息不符");
                            } else if ("03".equals(state)) {
                                stateText.append("无此卡信息");
                            } else if ("04".equals(state)) {
                                stateText.append("其它");
                            }
                            binding.redStatu.setText(stateText.toString());
                            binding.rechargeLL.setVisibility(View.GONE);
                            binding.rechargeRegistBtn.setVisibility(View.GONE);
                            binding.rechargeRegistBtn.setVisibility(View.GONE);
                            TipUtil.show(RechargeActivity.this, stateText.toString());
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    } else {
                        //校验CRC错误
                        TipUtil.show(RechargeActivity.this, "开卡报文校验CRC错误");
                    }
                }
                @Override
                public void onSocketError(int code, String msg) {
                    ProgressDialog.dismiss();
                    TipUtil.show(RechargeActivity.this, msg);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            CrashReport.postCatchedException(e);
        }
    }
    protected void onDestroy() {
        super.onDestroy();
        rechargeActivity = null;
    }
}