左晓为主开发手持机充值管理机
qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/RechargeActivity.java
@@ -6,15 +6,23 @@
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import com.dayu.baselibrary.utils.MornyUtil;
import com.dayu.baselibrary.utils.TipUtil;
import com.dayu.qihealonelibrary.card.UserCard;
import com.dayu.qihealonelibrary.databinding.ActivityRechargeQhaBinding;
import com.dayu.qihealonelibrary.dbBean.AdminDataBean;
import com.dayu.qihealonelibrary.dbBean.UserCardBean;
import com.dayu.qihealonelibrary.tools.NfcReadHelper;
import com.dayu.qihealonelibrary.utils.CardCommon;
import com.dayu.qihealonelibrary.utils.DeviceNumberUtils;
import com.dayu.qihealonelibrary.view.ProgressDialog;
import com.tencent.bugly.crashreport.CrashReport;
import java.util.Calendar;
import java.util.List;
/**
@@ -32,6 +40,8 @@
    AdminDataBean adminData;
    String userName;
    String cardNumber = null;
    UserCardBean userCardBean;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -49,24 +59,96 @@
    }
    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);
        try {
            readAllData();
        } catch (Exception e) {
            e.printStackTrace();
            CrashReport.postCatchedException(e);
        }
        super.onNewIntent(intent);
    }
    private void readAllData() {
        String cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber();
        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();
        if (!data.isEmpty()) {
            if (!TextUtils.isEmpty(cardNumber)) {
                setUserData(cardType, cardNumber, data);
            } else {
                TipUtil.show(this, "读取卡片失败,请重新贴卡");
            }
        } else {
            TipUtil.show(this, "卡片识别错误,请重试!");
        }
    }
    private void setUserData(String cardType, String cardNumber, List<byte[]> data) {
        String state = "";
        if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_1)) {
            state = "终端写卡";
        } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_2)) {
            state = "刷卡开泵后,当前状态不能充值";
            binding.rechargeLL.setVisibility(View.GONE);
        } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_3)) {
            state = "叠加充值";
            binding.rechargeLL.setVisibility(View.GONE);
        } else {
            TipUtil.show(this, "非用户卡,不能充值");
            return;
        }
        userCard = UserCard.getBean(data);
        List<UserCardBean> userCardBeans = baseDao.userCardDao().findUserName(cardNumber);
        AdminDataBean adminDataBean = baseDao.adminDao().findFirst();
        if (!userCardBeans.isEmpty()){
            userCardBean = userCardBeans.get(0);
            if (adminDataBean.addressCode.equalsIgnoreCase(String.valueOf(userCard.getArerNumber()))) {
                this.userName = userCardBean.getUserName();
                binding.rechargeReadLL.setVisibility(View.GONE);
                binding.rechargeTextLL.setVisibility(View.VISIBLE);
                binding.rechargeRegistBtn.setVisibility(View.VISIBLE);
                binding.userName.setText(userName);
                binding.redStatu.setText(state);
                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);
                        binding.redRechargeDate.setText("本卡最后购水日期:" + year + "年" + month + "月" + day + "日");
                    } else {
                        binding.redRechargeDate.setText("本卡最后购水日期:无");
                    }
                    binding.redInitCode.setText(cardNumber);
                    binding.redRechargeNumber.setText("本卡充值次数:" + userCard.getRechargeTimes() + "");
                    binding.redTotalWater.setText("总用水量:" + userCard.getTotalWater());
                    binding.redTotalPower.setText("总用电量:" + userCard.getTotalElectric());
                    binding.redRemainderBlance.setText(MornyUtil.changeF2Y(userCard.getBalance()) + "元");
                    binding.redRemainderWater.setText("剩余水量:" + userCard.getSurplusWater());
                }
            } else {
                TipUtil.show(this, "不是本区域卡");
            }
        }else {
            TipUtil.show(this, "未查询到该卡用户信息");
        }
    }
    private void initView() {
        try {
@@ -78,15 +160,13 @@
        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("cardNumber", cardNumber);
                intent.putExtra("userCard", userCard);
                intent.putExtra("userCardBean", userCardBean);
                startActivity(intent);
            } else {
                TipUtil.show(RechargeActivity.this, "请输入充值金额(元)");