From e5ac29afd5569196a54bd4f77457848afc7adf55 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期四, 24 十月 2024 11:47:25 +0800
Subject: [PATCH] 2024-10-24 朱宝民 添加反写接口,完善各相关查询接口,兼容反写信息

---
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/LastOperateENUM.java        |    5 +-
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml                                   |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml                                       |    3 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java         |   19 +++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java             |    3 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml                                   |   10 +++--
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java             |   14 ++++---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml                                    |    4 +-
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java       |   39 +++++++++++++++----
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRefund.java         |    6 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java |    5 +-
 11 files changed, 81 insertions(+), 29 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
index 6ddb1e5..b177eb6 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -251,7 +251,7 @@
         LEFT JOIN ba_user us ON ope.operator = us.id
         LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
     <where>
-      AND ope.operate_type in(1, 2, 5)
+      AND ope.operate_type in(1, 2, 5,10)
       AND ope.operate_valid = 2
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
@@ -300,6 +300,7 @@
         WHEN ope.operate_type = 1 THEN '寮�鍗�'
         WHEN ope.operate_type = 2 THEN '鍏呭��'
         WHEN ope.operate_type = 5 THEN '杩旇繕'
+        WHEN ope.operate_type = 10 THEN '鍙嶅啓'
       END) AS operateType,
       ope.operate_dt
     FROM se_card_operate ope
@@ -309,7 +310,7 @@
         LEFT JOIN ba_user us ON ope.operator = us.id
         Left JOIN se_payment_method pay ON ope.payment_id = pay.id
     <where>
-      AND ope.operate_type in(1, 2, 5)
+      AND ope.operate_type in(1, 2, 5,10)
       AND ope.operate_valid = 2
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
@@ -341,7 +342,7 @@
         LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
         INNER JOIN ba_user us ON ope.operator = us.id
     <where>
-      AND ope.operate_type IN(1,2,3,5)
+      AND ope.operate_type IN(1,2,3,5,10)
       AND ope.operate_valid = 2
       <if test = "villageId != null and villageId > 0">
         AND cli.villageId = #{villageId}
@@ -371,6 +372,7 @@
             WHEN 2 THEN '鍏呭��'
             WHEN 3 THEN '閿�鍗�'
             WHEN 5 THEN '琛ユ墸'
+            WHEN 10 THEN '鍙嶅啓'
         END) AS operateType,
         (IFNULL(ope.trade_amount,0.00) + IFNULL(ope.card_cost,0.00)) AS tradeAmount,
         IFNULL(ope.trade_amount,0.00) AS waterCost,
@@ -395,7 +397,7 @@
         LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
         LEFT JOIN ba_user us ON ope.operator = us.id
     <where>
-      AND ope.operate_type IN(1,2,3,5)
+      AND ope.operate_type IN(1,2,3,5,10)
       AND ope.operate_valid = 2
       <if test = "villageId != null and villageId > 0">
         AND cli.villageId = #{villageId}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index 1b18b3c..5c4ed90 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -454,7 +454,7 @@
     <select id="getCardsCount" parameterType="java.util.Map" resultType="java.lang.Long">
         SELECT COUNT(*) AS recordCount
         FROM se_client_card card
-            INNER JOIN se_client cli ON card.clientId = cli.id
+            LEFT JOIN se_client cli ON card.clientId = cli.id
         <where>
             AND card.state = 1
             <if test="clientNum != null and clientNum != ''">
@@ -483,7 +483,7 @@
             '鍐滄埛鍗�' AS cardType,
             FORMAT(card.money, 2) AS money
         FROM se_client_card card
-            INNER JOIN se_client cli ON card.clientId = cli.id
+            LEFT JOIN se_client cli ON card.clientId = cli.id
         <where>
             AND card.state = 1
             <if test="clientNum != null and clientNum != ''">
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml
index 9499940..d42ffae 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml
@@ -294,6 +294,7 @@
             WHEN ope.operate_type = 3 THEN '閿�鍗�'
             WHEN ope.operate_type = 4 THEN '琛ュ崱'
             WHEN ope.operate_type = 5 THEN '杩旇繕'
+            WHEN ope.operate_type = 10 THEN '鍙嶅啓'
         END AS operateType,
         Date(ope.operate_dt) AS tradeDate,
         COUNT(*) AS count,
@@ -304,7 +305,7 @@
     FROM se_card_operate ope
         INNER JOIN ba_user us ON us.id = ope.operator
     <where>
-      AND ope.operate_type IN(1,2,3,4,5)
+      AND ope.operate_type IN(1,2,3,4,5,10)
       AND ope.operate_valid = 2
       <if test = "cashierId != null and cashierId > 0">
         AND us.id = #{cashierId}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
index 734119c..54d03d4 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
@@ -189,7 +189,7 @@
     SELECT
       id,
       vc_num AS vcNum,
-      money,
+      ROUND(money / 100, 2) AS money,
       in_use AS inUse,
       (CASE
         WHEN money &lt;= #{alarmValue} THEN true
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
index cdd3d2d..d849c3f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -614,8 +614,7 @@
     }
 
     /**
-     * 琛ユ墸
-     *
+     * 琛ユ墸銆佸弽鍐�
      * @param po
      * @param bindingResult
      * @return
@@ -633,10 +632,11 @@
          * clientId         鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
          * cardNum          姘村崱缂栧彿
          * money            鍗$墖浣欓
-         * refund           琛ユ墸浣欓
+         * refund           琛ユ墸浣欓/鍙嶅啓閲戦
          * remarks          澶囨敞
          * operator         鎿嶄綔浜虹紪鍙�
          * refundTime       琛ユ墸鏃堕棿
+         * operateType      鎿嶄綔绫诲瀷锛�1-琛ユ墸锛�2-鍙嶅啓
          */
         Long cardId = 0L;
         Long clientId = 0L;
@@ -645,7 +645,7 @@
         Float refund = po.getRefund();
         String remarks = po.getRemarks();
         Long operator = po.getOperator();
-        Date refundTime = new Date();
+        Integer operateType = po.getOperateType();
 
         // 楠岃瘉姘村崱鐘舵�佹槸鍚︽敮鎸佸綋鍓嶆搷浣�
         String stateName = Optional.ofNullable(clientCardSv.getCardStateByCardNum(cardNum)).orElse("");
@@ -685,16 +685,29 @@
         SeCardOperate seCardOperate = new SeCardOperate();
         seCardOperate.setCardId(cardId);
         seCardOperate.setClientId(clientId);
-        seCardOperate.setMoney(money);
+        if(operateType == 1) {
+            // 琛ユ墸
+            seCardOperate.setMoney(money);
+            seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode());
+        }else {
+            // 鍙嶅啓
+            seCardOperate.setMoney(refund);
+            seCardOperate.setOperateType(OperateTypeENUM.WRITE_BACK.getCode());
+        }
+        //seCardOperate.setMoney(money);
         seCardOperate.setRefundAmount(refund);
-        seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode());
+        //seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode());
         seCardOperate.setRemarks(remarks);
         seCardOperate.setOperator(operator);
-        seCardOperate.setOperateDt(refundTime);
+        seCardOperate.setOperateDt(new Date());
         seCardOperate.setOperateValid((byte) 1);
         Long rec = Optional.ofNullable(cardOperateSv.add(seCardOperate)).orElse(0L);
         if (rec == 0) {
-            return BaseResponseUtils.buildErrorMsg(SellResultCode.REFUND_FAIL_WRITE_REFUND_ERROR.getMessage());
+            if(operateType == 1) {
+                return BaseResponseUtils.buildErrorMsg(SellResultCode.REFUND_FAIL_WRITE_REFUND_ERROR.getMessage());
+            }else {
+                return BaseResponseUtils.buildErrorMsg(SellResultCode.WRITE_BACK_FAIL_WRITE_BACK_ERROR.getMessage());
+            }
         }
 
         return BaseResponseUtils.buildSuccess(true);
@@ -881,6 +894,16 @@
             cardOperateSv.turnOperateValidByCardId(cardId, operateType);
             cardOperateSv.updateRefund(operateType, cardId);
         }
+        else if (operateType == 10) {
+            /**
+             * 鍙嶅啓鎿嶄綔鎵ц閫氱煡
+             *  1.鎿嶄綔璁板綍鏀逛负鏈夋晥
+             *  2.淇敼姘村崱琛ㄧ殑鎿嶄綔淇℃伅鍙婁綑棰�-浠庢搷浣滆褰曚腑鍙杕oney
+             *  璇存槑锛氳繑杩樻搷浣滆褰曚腑鐨刴oney灏辨槸鍙嶅啓閲戦
+             */
+            cardOperateSv.turnOperateValidByCardId(cardId, operateType);
+            cardOperateSv.updateWriteBack(operateType, cardId);
+        }
 
         return BaseResponseUtils.buildSuccess();
     }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
index 7f438a3..7b50431 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -816,4 +816,23 @@
         clientCard.setLastoper(LastOperateENUM.REFUND.getCode());
         return seClientCardMapper.updateByPrimaryKeySelective(clientCard);
     }
+
+    /**
+     * 淇敼鍙嶅啓姘村崱琛ㄧ殑鎿嶄綔淇℃伅鍙婁綑棰�
+     * @param operateType
+     * @param cardId
+     * @return
+     */
+    public Integer updateWriteBack(Integer operateType, Long cardId) {
+        SeCardOperate cardOperate = seCardOperateMapper.getCardOperate(operateType, cardId);
+        Date writeBackTime = Optional.ofNullable(cardOperate.getOperateDt()).orElse(new Date());
+        Float money = cardOperate.getMoney();
+
+        SeClientCard clientCard = new SeClientCard();
+        clientCard.setId(cardId);
+        clientCard.setRefunddt(writeBackTime);
+        clientCard.setMoney(money);
+        clientCard.setLastoper(LastOperateENUM.WRITE_BACK.getCode());
+        return seClientCardMapper.updateByPrimaryKeySelective(clientCard);
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRefund.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRefund.java
index 784c95b..82bde19 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRefund.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/dto/DtoRefund.java
@@ -55,4 +55,10 @@
     @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
     private Long operator;
+
+    /**
+     * 鎿嶄綔绫诲瀷锛�1-琛ユ墸锛�2-鍙嶅啓
+     */
+    @NotNull(message = "鎿嶄綔绫诲瀷涓嶈兘涓虹┖")
+    private Integer operateType;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java
index 722dfdf..8ce605b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/enums/OperateTypeENUM.java
@@ -21,9 +21,8 @@
     LOSS((byte)6, "鎸傚け"),
     REVERSAL((byte)7, "鍐叉"),
     UNLOCK((byte)8, "瑙i攣"),
-    CONSUME((byte)9, "娑堣垂");
-    //CHANGE_CARD((byte)10, "鎹㈠崱"),
-    //CHANGE_RECHARGE((byte)11, "鎹㈠崱鍏呭��");
+    CONSUME((byte)9, "娑堣垂"),
+    WRITE_BACK((byte)10, "鍙嶅啓");
 
     private final Byte code;
     private final String message;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/LastOperateENUM.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/LastOperateENUM.java
index 29b1e18..b7f7ed9 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/LastOperateENUM.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientCard/LastOperateENUM.java
@@ -21,9 +21,8 @@
     LOSS((byte)6, "鎸傚け"),
     REVERSAL((byte)7, "鍐叉"),
     UNLOCK((byte)8, "瑙i攣"),
-    CONSUME((byte)9, "娑堣垂");
-    //CHANGE_CARD((byte)10,"鎹㈠崱"),
-    //CHANGE_RECHARGE((byte)11,"鎹㈠崱鍏呭��");
+    CONSUME((byte)9, "娑堣垂"),
+    WRITE_BACK((byte)10, "鍙嶅啓");
 
     private final Byte code;
     private final String message;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
index ef8f6fa..adcce1b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
@@ -69,9 +69,10 @@
     REVERSAL_FAIL_WRITE_REVERSAL_ERROR(60002, "鍐叉澶辫触-鍐叉璁板綍鍐欏叆寮傚父"),
 
     /**
-     * 琛ユ墸
+     * 琛ユ墸/鍙嶅啓
      */
     REFUND_FAIL_WRITE_REFUND_ERROR(70001, "琛ユ墸澶辫触-琛ユ墸璁板綍鍐欏叆寮傚父"),
+    WRITE_BACK_FAIL_WRITE_BACK_ERROR(70002, "鍙嶅啓澶辫触-鍙嶅啓璁板綍鍐欏叆寮傚父"),
 
     /**
      * 鎬昏处
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
index 289bacb..6118669 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
@@ -104,14 +104,16 @@
         JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com));
         if(response != null && response.getString("code").equals("0001")) {
             JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap");
-            HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class);
 
             JSONArray jsonArray = new JSONArray();
-            for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) {
-                JSONObject jsonObject = new JSONObject();
-                jsonObject.put("rtuAddr", entry.getKey());
-                jsonObject.put("isOnLine", entry.getValue());
-                jsonArray.add(jsonObject);
+            if(attachment != null) {
+                HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class);
+                for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) {
+                    JSONObject jsonObject = new JSONObject();
+                    jsonObject.put("rtuAddr", entry.getKey());
+                    jsonObject.put("isOnLine", entry.getValue());
+                    jsonArray.add(jsonObject);
+                }
             }
 
             System.out.println(jsonArray.toJSONString());

--
Gitblit v1.8.0