| | |
| | | package com.dayu.recharge.activity; |
| | | |
| | | import android.content.Intent; |
| | | import android.nfc.Tag; |
| | | import android.os.Bundle; |
| | | import android.text.Editable; |
| | | import android.text.TextUtils; |
| | |
| | | import android.widget.EditText; |
| | | |
| | | import com.dayu.recharge.databinding.ActivityRechargeBinding; |
| | | import com.dayu.recharge.utils.ToastUtil; |
| | | import com.dayu.recharge.utils.WSHelper; |
| | | 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.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; |
| | | |
| | | |
| | | /** |
| | |
| | | * 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; |
| | | |
| | | Tag mTag; |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void physicalCardDoing(Tag tag) { |
| | | super.physicalCardDoing(tag); |
| | | try { |
| | | mTag=tag; |
| | | userCard = NfcReadHelper.getInstence(tag).getUserCardData(); |
| | | if (userCard != null) { |
| | | ProgressDialog.show(this); |
| | | selectBalance(userCard.getInitPeasantCode()); |
| | | } else { |
| | | TipUtil.show(RechargeActivity.this, "卡片读取失败"); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | CrashReport.postCatchedException(e); |
| | | } |
| | | } |
| | | |
| | | public void onNewIntent(Intent intent) { |
| | | |
| | | try { |
| | | // this.intent = intent; |
| | | userCard = NfcReadHelper.getInstence(intent).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() { |
| | | try { |
| | | adminData = baseDao.adminDao().findFirst(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | CrashReport.postCatchedException(e); |
| | | } |
| | | binding.rechargeRegistBtn.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | String morny = binding.rechargeWater.getText().toString(); |
| | | if (!TextUtils.isEmpty(morny)) { |
| | | String initCode = WSHelper.getInstance(RechargeActivity.this).get("initCode", ""); |
| | | String initCode = DeviceNumberUtils.getDeviceNumber(); |
| | | if (TextUtils.isEmpty(initCode)) { |
| | | ToastUtil.show(RechargeActivity.this, "设备注册号为空,请先设置IP和管理员地址"); |
| | | // return; |
| | | 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 { |
| | | ToastUtil.show(RechargeActivity.this, "请输入充值金额(元)"); |
| | | TipUtil.show(RechargeActivity.this, "请输入充值金额(元)"); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | //校验金额 |
| | | public static void setPricePoint(final EditText editText) { |
| | | editText.addTextChangedListener(new TextWatcher() { |
| | | @Override |
| | |
| | | if (s.toString().contains(".")) { |
| | | if (s.length() - 1 - s.toString().indexOf(".") > 2) { |
| | | s = s.toString().subSequence(0, |
| | | s.toString().indexOf(".") + 2); |
| | | s.toString().indexOf(".") + 3); |
| | | editText.setText(s); |
| | | editText.setSelection(s.length()); |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 查询余额 |
| | | * |
| | | * @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(), new SocketCallBack() { |
| | | @Override |
| | | public void onSocketResponse(SocketData readData) { |
| | | ProgressDialog.dismiss(); |
| | | if (CRC8.isCRC8(readData.getOriginDataBytes())) { |
| | | StringBuffer stateText = null; |
| | | 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(mTag, userCard); |
| | | } 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; |
| | | } |
| | | } |