From 9450bcb197c2de53982368d5c2059b31abed3b87 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 09 八月 2024 17:40:29 +0800
Subject: [PATCH] 齐河联网版程序除补卡相关逻辑

---
 qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java |  249 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 162 insertions(+), 87 deletions(-)

diff --git a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java
index b95f18c..3dc5ce1 100644
--- a/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java
+++ b/qiheonlinelibrary/src/main/java/com/dayu/qiheonlinelibrary/activity/RechargeActivity.java
@@ -1,6 +1,7 @@
 package com.dayu.qiheonlinelibrary.activity;
 
 import android.annotation.SuppressLint;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.Editable;
@@ -11,22 +12,37 @@
 import android.widget.EditText;
 
 import com.dayu.baselibrary.tools.HexUtil;
+import com.dayu.baselibrary.utils.DeviceUtils;
 import com.dayu.baselibrary.utils.MornyUtil;
 import com.dayu.baselibrary.utils.TipUtil;
 
 
+import com.dayu.baselibrary.utils.ToastUtil;
+import com.dayu.baselibrary.view.TipDialog;
+import com.dayu.qiheonlinelibrary.QHOnLineApplication;
 import com.dayu.qiheonlinelibrary.R;
+import com.dayu.qiheonlinelibrary.bean.CardInfoResult;
+import com.dayu.qiheonlinelibrary.bean.RechargeResult;
 import com.dayu.qiheonlinelibrary.card.UserCard;
 import com.dayu.qiheonlinelibrary.databinding.ActivityRechargeQhlBinding;
 import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean;
 import com.dayu.qiheonlinelibrary.dbBean.ElectricPriceBean;
+import com.dayu.qiheonlinelibrary.dbBean.RechargeBean;
 import com.dayu.qiheonlinelibrary.dbBean.UserCardBean;
+import com.dayu.qiheonlinelibrary.net.ApiManager;
+import com.dayu.qiheonlinelibrary.net.BaseResponse;
+import com.dayu.qiheonlinelibrary.net.RSAUtile;
+import com.dayu.qiheonlinelibrary.net.subscribers.SubscriberListener;
 import com.dayu.qiheonlinelibrary.tools.NfcReadHelper;
 import com.dayu.qiheonlinelibrary.utils.CardCommon;
 import com.tencent.bugly.crashreport.CrashReport;
 
+import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -42,13 +58,15 @@
     ActivityRechargeQhlBinding binding;
     public static RechargeActivity rechargeActivity;
 
-    AdminDataBean adminData;
-    String userName;
-    String cardNumber = null;
-    UserCardBean userCardBean;
-    int waterPrice;
+
+    String cardNumber = null;//瀹炰綋鍗″彿
+    RechargeBean rechargeBean;
+
     String rechageWater;//鍏呭�肩殑姘撮噺
-    ElectricPriceBean priceBean;
+
+    String cardType;//鍗$姸鎬�
+
+    CardInfoResult cardInfoResult;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -58,7 +76,6 @@
             setContentView(binding.getRoot());
             setPricePoint(binding.rechargeWater);
             rechargeActivity = this;
-            waterPrice = baseDao.adminDao().findFirst().getWaterPrice();
             initView();
         } catch (Exception e) {
             e.printStackTrace();
@@ -79,98 +96,50 @@
 
 
     private void readAllData() {
-        String cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber();
+        cardType = NfcReadHelper.getInstence(intent, this).getCradTypeAndCardNumber();
 
         String[] cardTypes = cardType.split(",");
         if (cardTypes != null && cardTypes.length == 2) {
             cardNumber = cardType.split(",")[0];
-            cardNumber = HexUtil.spaceHex(cardNumber);
-            cardNumber = HexUtil.HighLowHex(cardNumber);
             cardType = cardType.split(",")[1];
         }
-        List<byte[]> data = NfcReadHelper.getInstence(intent, this).getOnesectorData();
+        getUserInfoAndCardInfo(cardNumber);
 
-        if (!data.isEmpty()) {
-            if (!TextUtils.isEmpty(cardNumber)) {
-                setUserData(cardType, cardNumber, data);
-                if(priceBean!=null){
-                    binding.redRechargeElectric.setText("鐢甸噺鍗曚环锛�"+priceBean.getPrice()+"鍏�/搴�");
-                }
-            } else {
-                TipUtil.show(this, "璇诲彇鍗$墖澶辫触锛岃閲嶆柊璐村崱");
-            }
-        } else {
-            TipUtil.show(this, "鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒");
-        }
     }
 
 
-    @SuppressLint("ResourceAsColor")
-    private void setUserData(String cardType, String cardNumber, List<byte[]> data) {
-
-
+    private void setUserData(String cardNumber, String userName, String lastRechargeTime, float iccardBalanceMoney, List<byte[]> data) {
         String state = "";
         if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_1)) {
             state = "缁堢鍐欏崱";
             binding.rechargeLL.setVisibility(View.VISIBLE);
             binding.rechargeRegistBtn.setVisibility(View.VISIBLE);
-            binding.redStatu.setTextColor(R.color.black);
+            binding.redStatu.setTextColor(this.getResources().getColor(R.color.black));
         } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_2)) {
-            state = "鏈埛鍗″叧娉�,褰撳墠涓嶅彲鍏呭��";
-            binding.rechargeLL.setVisibility(View.GONE);
-            binding.rechargeRegistBtn.setVisibility(View.GONE);
-            binding.redStatu.setTextColor(com.dayu.baselibrary.R.color.red);
+            setCardState("鏈埛鍗″叧娉�,褰撳墠涓嶅彲鍏呭��");
         } else if (cardType.equalsIgnoreCase(CardCommon.USER_CARD_TYPE_3)) {
-            state = "鍙犲姞鍏呭��";
-            binding.rechargeLL.setVisibility(View.GONE);
-            binding.rechargeRegistBtn.setVisibility(View.GONE);
+            setCardState("鍙犲姞鍏呭��");
         } else {
             TipUtil.show(this, "闈炵敤鎴峰崱锛屼笉鑳藉厖鍊�");
             return;
         }
 
-
         userCard = UserCard.getBean(data);
-        List<UserCardBean> userCardBeans = baseDao.userCardDao().findUserName(cardNumber);
-        AdminDataBean adminDataBean = baseDao.adminDao().findFirst();
 
+        if (Integer.valueOf(QHOnLineApplication.getInstance().arerNumber) == userCard.getArerNumber()) {
 
-        if (Integer.valueOf(adminDataBean.getAddressCode()) == userCard.getArerNumber()) {
-            if (!userCardBeans.isEmpty()) {
-                userCardBean = userCardBeans.get(0);
-                this.userName = userCardBean.getUserName();
-            } else {
-                userCardBean = new UserCardBean();
-                userCardBean.setCardNumber(cardNumber);
-                userCardBean.setUserName("鏈煡鐢ㄦ埛");
-                userCardBean.setPhone("鏈煡");
-                userCardBean.setUserID("鏈煡");
-                userCardBean.setAddressCode(String.valueOf(userCard.getArerNumber()));
-                userCardBean.setSerial(String.valueOf(userCard.getArerNumber()));
-                this.userName = "鏈煡鐢ㄦ埛";
-            }
             binding.rechargeReadLL.setVisibility(View.GONE);
             binding.rechargeTextLL.setVisibility(View.VISIBLE);
             binding.userName.setText(userName);
             binding.redStatu.setText(state);
+            binding.redInitCode.setText(cardNumber);
+            binding.redRechargeDate.setText("鏈崱鏈�鍚庤喘姘存棩鏈燂細\n\n" + lastRechargeTime);
             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("鎬荤敤姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getTotalWater()) + " 鍚�");
-//                binding.redTotalPower.setText("鎬荤敤鐢甸噺锛�" + MornyUtil.changeF2Y(userCard.getTotalElectric()) + " 搴�");
-                binding.redRemainderBlance.setText(MornyUtil.changeF2Y(userCard.getBalance()) + " 鍏�");
-                binding.redRemainderWater.setText("鍓╀綑姘撮噺锛�" + MornyUtil.changeF2Y(userCard.getSurplusWater()) + " 鍚�");
-//                binding.redWaterPrice.setText("姣忕珛鏂圭背姘翠环鏍硷細" + MornyUtil.changeF2Y(adminData.getWaterPrice()) + " 鍏�");
+
+                binding.redRemainderBlance.setText(String.valueOf(iccardBalanceMoney) + " 鍏�");
             }
+
+            binding.redRechargeElectric.setText("鐢甸噺鍗曚环锛�" + QHOnLineApplication.getInstance().electriclePriceStr + "鍏�/搴�");
 
         } else {
             TipUtil.show(this, "闈炴湰鍖哄煙鍗n涓嶈兘鍏呭�硷紒锛侊紒");
@@ -179,29 +148,13 @@
 
     }
 
-
     private void initView() {
-        try {
-            adminData = baseDao.adminDao().findFirst();
-            priceBean = baseDao.electricPriceDao().findFirst();
-        } catch (Exception e) {
-            e.printStackTrace();
-            CrashReport.postCatchedException(e);
-        }
         binding.rechargeRegistBtn.setOnClickListener(v -> {
             String morny = binding.rechargeWater.getText().toString();
             if (!TextUtils.isEmpty(morny)) {
-                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);
-//                intent.putExtra("rechageWater", rechageWater);
-                startActivity(intent);
+                rechaege(morny);
             } else {
-                TipUtil.show(RechargeActivity.this, "璇疯緭鍏ュ厖鍊奸噾棰濓紙鍏冿級");
+                TipUtil.show(RechargeActivity.this, "璇疯緭鍏ュ厖鍊奸噾棰�");
             }
         });
     }
@@ -236,7 +189,7 @@
                 }
                 String morny = editText.getText().toString();
                 if (!TextUtils.isEmpty(morny)) {
-                    rechageWater = MornyUtil.intDiv(MornyUtil.changeY2F(editText.getText().toString()), waterPrice);
+//                    rechageWater = MornyUtil.intDiv(MornyUtil.changeY2F(editText.getText().toString()), waterPrice);
 //                    binding.redRechargeWater.setText("鍏呭�兼按閲忥細" + rechageWater + " 绔嬫柟绫�(鍚�)");
                 }
 
@@ -264,4 +217,126 @@
         super.onDestroy();
         rechargeActivity = null;
     }
+
+
+    private void startNfcActivity(String morny, String balance, float rechargeElectric, float iccardBalanceElectric, float totalMorny, String iccardRechargeRecordId) {
+
+        //娣诲姞鍏呭�间俊鎭�
+        rechargeBean = new RechargeBean();
+        rechargeBean.setCardNumber(cardNumber);
+        rechargeBean.setUserCode(userCard.getUserCode());
+        rechargeBean.setUserName("");
+        rechargeBean.setPersonId(cardInfoResult.getPeasantId());
+        rechargeBean.setSerial(DeviceUtils.getSN());
+        rechargeBean.setArerNumber(QHOnLineApplication.getInstance().arerNumber);
+        rechargeBean.setMorny(morny);
+        rechargeBean.setBalance(balance);
+        rechargeBean.setRechargeElectric(String.valueOf(rechargeElectric));
+        rechargeBean.setPrice(QHOnLineApplication.getInstance().electriclePriceStr);
+        rechargeBean.setSurplusElectic(String.valueOf(iccardBalanceElectric));
+        long time = System.currentTimeMillis();
+        rechargeBean.setRechargeDate(time);
+        rechargeBean.setUserId("");
+        rechargeBean.setTotalMorny(String.valueOf(totalMorny));
+        rechargeBean.setState(1);
+        rechargeBean.setOrderId(iccardRechargeRecordId);
+
+        userCard.setCardWriteState(0);
+        userCard.setCardState(1);
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(time);
+        userCard.setBalance(MornyUtil.changeY2F(String.valueOf(balance)));
+        userCard.setSurplusElecticity(MornyUtil.changeY2F(String.valueOf(iccardBalanceElectric)));
+        String sumMorny = MornyUtil.sumPrice(Float.valueOf(MornyUtil.changeF2Y(userCard.getTotalMorny())), Float.valueOf(morny));
+        userCard.setTotalMorny(MornyUtil.changeY2F(sumMorny));
+        userCard.setRechargeDate(calendar);
+
+
+        Intent intent = new Intent(RechargeActivity.this, NFCWreatActivity.class);
+        intent.putExtra("morny", morny);
+        intent.putExtra("userCard", userCard);
+        intent.putExtra("rechargeBean", rechargeBean);
+        startActivity(intent);
+    }
+
+
+    /**
+     * IC鍗″厖鍊�
+     *
+     * @param morny
+     */
+    public void rechaege(String morny) {
+        Map<String, Object> data = new HashMap<>();
+        //缁堢璁惧鍙�
+        data.put("equipCode", DeviceUtils.getSN());
+        //ic鍗′俊鎭痠d
+        data.put("iccardNum", cardNumber);
+        //浜ゆ槗姘磋垂閲戦锛堝厓锛�
+        data.put("rechargeWaterMoney", morny);
+        //鍗″唴鍓╀綑閲戦锛堝厓锛�
+        data.put("iccardBalanceMoney", MornyUtil.changeF2Y(userCard.getBalance()));
+        //鍗″唴鍓╀綑姘撮噺锛坢鲁锛�
+        data.put("iccardBalanceAmonunt", "0");
+        //鍗″唴鍓╀綑鐢甸噺
+        data.put("iccardBalanceElectric", MornyUtil.changeF2Y(userCard.getSurplusElecticity()));
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/recharge/rechargeCard", RechargeResult.class, data, new SubscriberListener<BaseResponse<RechargeResult>>() {
+            @Override
+            public void onNext(BaseResponse<RechargeResult> t) {
+                if (t.isSuccess()) {
+                    RechargeResult rechargeResult = t.getData();
+                    startNfcActivity(morny, rechargeResult.getIccardBalanceMoney(), rechargeResult.getRechargeElectricAmount(), rechargeResult.getIccardBalanceElectric(), rechargeResult.getTotalRechargeMoney(), rechargeResult.getIccardRechargeRecordId());
+                }
+            }
+        });
+    }
+
+
+    /**
+     * 鑾峰彇鍗′俊鎭拰鐢ㄦ埛淇℃伅
+     *
+     * @param iccardCode
+     */
+    public void getUserInfoAndCardInfo(String iccardCode) {
+        Map<String, Object> data = new HashMap<>();
+        //ic鍗′俊鎭痠d
+        data.put("iccardNum", iccardCode);
+        ApiManager.getInstance().requestPostLoading(this, "api/sjgg/iccard/peasant/getIccardInfoVoByCardCode", CardInfoResult.class, data, new SubscriberListener<BaseResponse<CardInfoResult>>() {
+            @Override
+            public void onNext(BaseResponse<CardInfoResult> t) {
+                String state = "";
+                if (t.isSuccess()) {
+                    //ic鍗$姸鎬� 0 姝e父 1 宸叉敞閿� 2 宸叉寕澶�
+                    if (t.getData().getIccardStatus() == 0) {
+                        List<byte[]> data = NfcReadHelper.getInstence(intent, RechargeActivity.this).getOnesectorData();
+                        if (!data.isEmpty()) {
+                            if (!TextUtils.isEmpty(cardNumber)) {
+                                cardInfoResult = t.getData();
+                                setUserData(cardNumber, cardInfoResult.getPeasantName(), cardInfoResult.getLastRechargeTime(), cardInfoResult.getIccardBalanceMoney(), data);
+                            } else {
+                                TipUtil.show(RechargeActivity.this, "璇诲彇鍗$墖澶辫触锛岃閲嶆柊璐村崱");
+                            }
+                        } else {
+                            TipUtil.show(RechargeActivity.this, "鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒");
+                        }
+                    } else if (t.getData().getIccardStatus() == 1) {
+                        TipUtil.show(RechargeActivity.this, "褰撳墠鍗″凡娉ㄩ攢");
+                    } else {
+                        TipUtil.show(RechargeActivity.this, "褰撳墠鍗″凡鎸傚け");
+                    }
+
+
+                }
+            }
+        });
+    }
+
+
+    private void setCardState(String state) {
+        binding.rechargeLL.setVisibility(View.GONE);
+        binding.rechargeRegistBtn.setVisibility(View.GONE);
+        binding.redStatu.setTextColor(RechargeActivity.this.getResources().getColor(com.dayu.baselibrary.R.color.red));
+        binding.redStatu.setText(state);
+    }
+
+
 }

--
Gitblit v1.8.0