From 06c1e69816f028c3108ce4e1e01db4251e481b06 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 05 七月 2024 08:41:21 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/qo/QoCommand.java                  |   40 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java                      |  168 +++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoRecharge.java                |   25 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java              |   12 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java                    |   13 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoCommand.java                                      |   41 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java                     |   36 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java                                  |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java                    |   48 ++-
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Card.java                      |   27 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Usability.java                 |   22 +
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/DtoBase.java                  |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java                                |    7 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java                                  |   24 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java                |   34 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml                                          |   77 +++--
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml                                            |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java                                     |   33 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml                                       |   61 ++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java                        |   17 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandCtrl.java                   |   43 +++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml                                               |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java                            |   21 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java              |    7 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml                                              |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml                                                 |   10 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java                                     |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java                              |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveOpen.java                |    5 
 30 files changed, 682 insertions(+), 118 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
index c4931dc..6275ab9 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
@@ -256,6 +256,7 @@
             // 鍒涘缓鍛戒护鏃ュ織瀵硅薄骞舵坊鍔犲埌鏁版嵁搴撲腑
             RmCommandHistory rmCommandHistory = getComHistory(comId, commandCode, commandName, intakeId, rtuAddr, protocol, param, operator);
             rmCommandHistoryMapper.insert(rmCommandHistory);
+            comId = rmCommandHistory.getId();
 
             // 鍥炶皟寮傚父
             if(!response_CallBack.getCode().equals("0001")) {
@@ -289,12 +290,24 @@
             System.out.println(job_subData);
             Boolean dealResult = job_subData.getBoolean("success");
             if(!dealResult) {
+                /**
+                 * 鎵ц澶辫触
+                 * 鏇存柊鎵ц缁撴灉銆佽繑鍥炵粨鏋滄椂闂淬�佺粨鏋滃唴瀹�
+                 */
+                rmCommandHistory = new RmCommandHistory();
+                rmCommandHistory.setId(comId);
+                rmCommandHistory.setResult((byte)0);
+                rmCommandHistory.setResultTime(new Date());
+                rmCommandHistory.setResultText((JSONObject)JSON.toJSON(response_CallBack.getContent()));
+                rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory);
                 return BaseResponseUtils.buildErrorMsg(response_CallBack.getContent().toString());
             }
 
             /**
-             * 鎵ц鎴愬姛锛岃繑鍥炲洖璋冨唴瀹�
+             * 鎵ц鎴愬姛
              * 濡傛灉鏄紑鍏抽榾锛氭洿鏀硅櫄鎷熷崱鐘舵�侊細鏄惁浣跨敤涓�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂�
+             * 鏇存柊鎵ц缁撴灉銆佽繑鍥炵粨鏋滄椂闂淬�佺粨鏋滃唴瀹�
+             * 杩斿洖鍥炶皟鍐呭
              */
             if(comType != null) {
                 SeVirtualCard virtualCard = new SeVirtualCard();
@@ -311,6 +324,15 @@
 
             // 鍥炶皟杩斿洖鐨勫唴瀹�
             Data myData = (Data)response_CallBack.getContent();
+
+            // 鏇存柊鍛戒护鏃ュ織锛氭墽琛岀粨鏋溿�佽繑鍥炵粨鏋滄椂闂淬�佺粨鏋滃唴瀹�
+            rmCommandHistory = new RmCommandHistory();
+            rmCommandHistory.setId(comId);
+            rmCommandHistory.setResult((byte)1);
+            rmCommandHistory.setResultTime(new Date());
+            rmCommandHistory.setResultText((JSONObject)JSON.toJSON(myData));
+            rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory);
+
             return BaseResponseUtils.buildSuccess(myData) ;
         } else {
             // 璇锋眰澶辫触
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
index 08a4e2f..0721be2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoBa.BaUser;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
 import com.dy.pipIrrGlobal.voBa.VoUserInfo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -11,6 +12,8 @@
 
 @Mapper
 public interface BaUserMapper extends BaseMapper<BaUser> {
+
+    BaUser selectByPrimaryKey(Long id);
 
     /**
      * 鐢ㄦ埛鐧诲綍
@@ -130,5 +133,4 @@
      */
     List<Map<String, Object>> getRoleNamesByUserId(@Param("userId") Long userId);
 
-    BaUser selectById(Long id);
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
index 4d85be0..171aca8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
@@ -132,4 +132,11 @@
      * @return
      */
     List<VoOnLineIntake> getUsedIntakes(@Param("onLineMap") String onLineMap, @Param("operator") Long operator);
+
+    /**
+     * 鍙栨按鍙e悕绉版崲鍙栨按鍙D锛屾壂鐮佸紑闃�浣跨敤
+     * @param intakeName
+     * @return
+     */
+    Long getIntakeIdByName(String intakeName);
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java
index 7161e1c..34f45dd 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java
@@ -4,10 +4,12 @@
 import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
 import com.dy.pipIrrGlobal.voRm.VoUnclosedParam;
 import com.dy.pipIrrGlobal.voRm.VoUnclosedValve;
+import com.dy.pipIrrGlobal.voRm.VoCommand;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author ZhuBaoMin
@@ -43,6 +45,19 @@
      * @param intakeId
      * @return
      */
-    //VoUnclosedParam getUncloseParam(Long intakeId);
     VoUnclosedParam getUncloseParam(@Param("onLineMap") String onLineMap, @Param("intakeId")Long intakeId);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍛戒护鏃ュ織鍘嗗彶璁板綍鎬绘暟
+     * @param params
+     * @return
+     */
+    Long getCommandHistoriesCount(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍛戒护鏃ュ織鍘嗗彶璁板綍
+     * @param params
+     * @return
+     */
+    List<VoCommand> getCommandHistories(Map<?, ?> params);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java
index f79881f..f2373d2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java
@@ -21,7 +21,7 @@
     private static final long serialVersionUID = 202401241704002L;
 
     @Schema(title = "鐢ㄦ埛ID")
-    private String userId;
+    private String id;
 
     @Schema(title = "鐢ㄦ埛濮撳悕")
     private String userName;
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoCommand.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoCommand.java
new file mode 100644
index 0000000..73f38e6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoCommand.java
@@ -0,0 +1,41 @@
+package com.dy.pipIrrGlobal.voRm;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-02 16:22
+ * @LastEditTime 2024-07-02 16:22
+ * @Description 鍛戒护鏃ュ織瑙嗗浘
+ */
+
+@Data
+public class VoCommand {
+    private static final long serialVersionUID = 1L;
+
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long id;
+
+    private String commandName;
+
+    private String intakeName;
+
+    private String rtuAddr;
+
+    private String protocol;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date sendTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date resultTime;
+
+    private String result;
+
+    private String userName;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java
index 365a623..1434dd0 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java
@@ -1,5 +1,7 @@
 package com.dy.pipIrrGlobal.voSe;
 
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
 import com.dy.common.po.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -20,17 +22,36 @@
 public class VoRecharge implements BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    @Schema(title = "ID")
-    private String id;
+    //@Schema(title = "ID")
+    //private String id;
+
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long opeId;
+
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long cardId;
 
     @Schema(title = "鍐滄埛濮撳悕")
     private String clientName;
 
+    private String phone;
+
+    private String idCard;
+
     @Schema(title = "鍐滄埛缂栧彿")
     private String clientNum;
 
-    @Schema(title = "姘村崱缂栧彿")
-    private String cardNum;
+    private String address;
+
+    /**
+     * 姘村崱浣欓
+     */
+    private Float money;
+
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long cardNum;
+
+    private Integer cardCost;
 
     @Schema(title = "鍏呭�奸噾棰�")
     private Float amount;
@@ -48,7 +69,9 @@
     private Float price;
 
     @Schema(title = "鎿嶄綔浜�")
-    private String operator;
+    private String opr;
+
+    private String operateType;
 
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
index e2e5d47..a07541e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
@@ -291,7 +291,7 @@
     <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鐢ㄦ埛鍒楄〃-->
     <select id="getUsers" resultType="com.dy.pipIrrGlobal.voBa.VoUserInfo">
         SELECT
-            CAST(id AS char) AS userId,
+            CAST(id AS char) AS id,
             phone,
             name AS userName,
             disabled AS stateId,
@@ -343,4 +343,12 @@
         WHERE userId = ${userId}
 
     </select>
+
+    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+        <!--@mbg.generated-->
+        select
+        <include refid="Base_Column_List" />
+        from ba_user
+        where id = #{id,jdbcType=BIGINT}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
index 2ee04fa..363e4e2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -437,4 +437,9 @@
       </if>
     </where>
   </select>
+
+  <!--鍙栨按鍙e悕绉版崲鍙栨按鍙D锛屾壂鐮佸紑闃�浣跨敤-->
+  <select id="getIntakeIdByName" resultType="java.lang.Long">
+    SELECT id AS intakeId FROM pr_intake WHERE `name` = #{intakeName}
+  </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
index 5394661..2ef9373 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
@@ -246,4 +246,65 @@
       LIMIT 0,1
   </select>
 
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍛戒护鏃ュ織鍘嗗彶璁板綍鎬绘暟-->
+  <select id="getCommandHistoriesCount" resultType="java.lang.Long">
+    SELECT
+      COUNT(*) AS recordCount
+    FROM rm_command_history his
+      INNER JOIN pr_intake inta ON inta.id = his.intake_id
+      LEFT JOIN se_client cli ON cli.id = his.operator
+      LEFT JOIN ba_user  user ON user.id = his.operator
+    <where>
+      <if test = "commandName != null and commandName !=''">
+        AND his.command_name LIKE CONCAT('%',#{commandName},'%')
+      </if>
+      <if test = "result != null">
+        AND his.result = #{result}
+      </if>
+      <if test = "timeStart != null and timeStop != null">
+        AND his.send_time BETWEEN #{timeStart} AND #{timeStop}
+      </if>
+    </where>
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍛戒护鏃ュ織鍘嗗彶璁板綍-->
+  <select id="getCommandHistories" resultType="com.dy.pipIrrGlobal.voRm.VoCommand">
+    SELECT
+      his.id,
+      his.command_name AS commandName,
+      inta.name AS intakeName,
+      his.rtu_addr AS rtuAddr,
+      his.protocol,
+      his.send_time AS sendTime,
+      his.result_time AS resultTime,
+      (CASE
+         WHEN his.result = 1 THEN "鎴愬姛"
+         ELSE "澶辫触"
+        END) AS result,
+      his.result_text,
+      IFNULL(cli.name, user.name) AS userName
+    FROM rm_command_history his
+     INNER JOIN pr_intake inta ON inta.id = his.intake_id
+     LEFT JOIN se_client cli ON cli.id = his.operator
+     LEFT JOIN ba_user  user ON user.id = his.operator
+    <where>
+      <if test = "commandName != null and commandName !=''">
+        AND his.command_name LIKE CONCAT('%',#{commandName},'%')
+      </if>
+      <if test = "result != null">
+        AND his.result = #{result}
+      </if>
+
+      <if test = "timeStart != null and timeStop != null">
+        AND his.send_time BETWEEN #{timeStart} AND #{timeStop}
+      </if>
+    </where>
+    ORDER BY his.send_time DESC
+    <trim prefix="limit " >
+      <if test="start != null and count != null">
+        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
+      </if>
+    </trim>
+  </select>
+
 </mapper>
\ No newline at end of file
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 d9fa1de..00047cf 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -235,10 +235,10 @@
     select
         COUNT(*) AS recordCount
     FROM se_card_operate ope
-        INNER JOIN se_client_card card ON ope.card_id = card.id
-        INNER JOIN se_client cli ON ope.client_id = cli.id
-        INNER JOIN ba_user us ON ope.operator = us.id
-        Left JOIN se_payment_method pay ON ope.payment_id = pay.id
+    INNER JOIN se_client_card card ON ope.card_id = card.id
+    INNER JOIN se_client cli ON ope.client_id = cli.id
+    INNER 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(2, 5)
       <if test = "clientName != null and clientName !=''">
@@ -253,38 +253,51 @@
         AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
-      <if test = "paymentId != null and paymentId > 0">
-        AND ope.payment_id = ${paymentId}
-      </if>
+      <!--      <if test = "paymentId != null and paymentId > 0">-->
+      <!--        AND ope.payment_id = ${paymentId}-->
+      <!--      </if>-->
 
-      <if test = "rechargeTimeStart != null and rechargeTimeStop != null">
-        AND ope.operate_dt BETWEEN #{rechargeTimeStart} AND #{rechargeTimeStop}
-      </if>
+      <!--      <if test = "rechargeTimeStart != null and rechargeTimeStop != null">-->
+      <!--        AND ope.operate_dt BETWEEN #{rechargeTimeStart} AND #{rechargeTimeStop}-->
+      <!--      </if>-->
     </where>
   </select>
 
   <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍏呭�艰褰�-->
   <select id="getRecharges" resultType="com.dy.pipIrrGlobal.voSe.VoRecharge">
     SELECT
-        CAST(ope.id AS char) AS id,
-        cli.name AS clientName,
-        cli.clientNum,
-        CAST(card.cardNum AS char) AS cardNum,
-        IFNULL(ope.trade_amount, 0) AS amount,
-        IFNULL(ope.refund_amount, 0) AS refundAmount,
-        (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0)) AS afterRecharge,
-        -- 	ope.payment_id AS paymentId,
-        pay.name AS paymentName,
-        ope.price,
-        us.name AS operator,
-        ope.operate_dt
+      ope.id AS opeId,
+      card.id AS cardId,
+      cli.name AS clientName,
+      cli.phone,
+      cli.idCard,
+      cli.clientNum,
+      cli.address,
+      card.money,
+      CASE
+        WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))
+        ELSE card.cardNum
+      END AS cardNum,
+      IFNULL(ope.card_cost,0) AS cardCost,
+      IFNULL(ope.trade_amount, 0) AS amount,
+      IFNULL(ope.refund_amount, 0) AS refundAmount,
+      (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0)) AS afterRecharge,
+      pay.name AS paymentName,
+      ope.price,
+      us.name AS opr,
+      (CASE
+        WHEN ope.operate_type = 1 THEN "寮�鍗�"
+        WHEN ope.operate_type = 2 THEN "鍏呭��"
+        WHEN ope.operate_type = 5 THEN "杩旇繕"
+      END) AS operateType,
+      ope.operate_dt
     FROM se_card_operate ope
     INNER JOIN se_client_card card ON ope.card_id = card.id
-        INNER JOIN se_client cli ON ope.client_id = cli.id
-        INNER JOIN ba_user us ON ope.operator = us.id
-        Left JOIN se_payment_method pay ON ope.payment_id = pay.id
+    INNER JOIN se_client cli ON ope.client_id = cli.id
+    INNER 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(2, 5)
+      AND ope.operate_type in(1, 2, 5)
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
@@ -297,13 +310,13 @@
         AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
-      <if test = "paymentId != null and paymentId > 0">
-        AND ope.payment_id = ${paymentId}
-      </if>
+<!--      <if test = "paymentId != null and paymentId > 0">-->
+<!--        AND ope.payment_id = ${paymentId}-->
+<!--      </if>-->
 
-      <if test = "rechargeTimeStart != null and rechargeTimeStop != null">
-        AND ope.operate_dt BETWEEN #{rechargeTimeStart} AND #{rechargeTimeStop}
-      </if>
+<!--      <if test = "rechargeTimeStart != null and rechargeTimeStop != null">-->
+<!--        AND ope.operate_dt BETWEEN #{rechargeTimeStart} AND #{rechargeTimeStop}-->
+<!--      </if>-->
     </where>
     ORDER BY ope.operate_dt DESC
     <trim prefix="limit " >
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java
index 3735170..6638d2e 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java
@@ -58,7 +58,7 @@
      * @param dataCd83CloseVo 鍏抽榾涓婃姤鏁版嵁瀵硅薄
      */
     private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo) throws Exception {
-        RmOpenCloseValveLast poLast = sv.getRmOpenCloseValveLast(controller.getIntakeId()) ;
+        RmOpenCloseValveLast poLast = sv.getRmOpenCloseValveLast(rtuAddr) ;
         if(poLast == null){
             //鏁版嵁搴撲腑涓嶅瓨鍦ㄨ鎺у埗鍣ㄧ殑寮�鍏抽榾鏁版嵁
             //棣栧厛鐢熸垚鏈�鏂版暟鎹強鍘嗗彶鏁版嵁锛屽苟鍏堜繚瀛�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
index 2ac39f3..355834b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
@@ -43,7 +43,7 @@
     @Value("${user.defaultTrueRandomFalsePassword:true}")
     private Boolean defaultTrueRandomFalsePassword;
 
-    @Value("${user.defaultPassword:ABC123}")
+    @Value("${user.defaultPassword:abc_123}")
     private String defaultPassword;
 
     @Autowired
@@ -207,7 +207,8 @@
             po.supperAdmin = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
             po.deleted = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
             po.orgTag = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂�
-            po.password =  MD5.encrypt(po.password);//杩涜鍔犲瘑
+//            淇敼鐢ㄦ埛淇℃伅涓嶈繘琛屽瘑鐮佷慨鏀�
+//            po.password =  MD5.encrypt(po.password);//杩涜鍔犲瘑
             count = this.sv.update(po);
             this.sv.setRoles(po.id, po.roleIds);
         } catch (Exception e) {
@@ -284,7 +285,7 @@
 
     /**
      * 閲嶇疆瀵嗙爜
-     * @param vo form琛ㄥ崟瀵硅薄
+     * @param
      * @return 鏄惁鎴愬姛
      */
     @Operation(summary = "閲嶇疆瀵嗙爜", description = "鎻愪氦鏁版嵁锛坒orm琛ㄥ崟json鏁版嵁锛夛紝杩涜瀵嗙爜閲嶇疆")
@@ -296,21 +297,21 @@
                             schema = @Schema(implementation = Boolean.class))}
             )
     })
-    @PostMapping(path = "resetPassword", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @PostMapping(path = "resetPassword")
     @SsoAop()
-    public BaseResponse<Boolean> resetPassword(@RequestBody  ResetPasswordVo vo) throws Exception {
-        if (vo.id == null) {
+    public BaseResponse<Boolean> resetPassword(String id) throws Exception {
+        if (id == null || id == "") {
             return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖");
         }
-        String password = MD5.encrypt(vo.password);//杩涜鍔犲瘑鐮�
-        Long idLg = Long.parseLong(vo.id);
+        Long idLg = Long.parseLong(id);
         int count;
         try {
             BaUser po = this.sv.selectById(idLg);
             if (Objects.isNull(po)) {
                 return BaseResponseUtils.buildFail("鏈緱鍒扮敤鎴凤紝璇锋眰澶辫触");
-            } else {
-                count = this.sv.changePassword(idLg, password);
+            }else {
+                String defaultPassword1 = MD5.encrypt(defaultPassword);//杩涜鍔犲瘑鐮�
+                count = this.sv.changePassword(idLg, defaultPassword1);
             }
         } catch (Exception e) {
             log.error("淇濆瓨鐢ㄦ埛寮傚父", e);
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
index 6534304..c11a566 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
@@ -50,7 +50,7 @@
      * @return 鐢ㄦ埛瀹炰綋
      */
     public BaUser selectById(Long id) {
-        return this.dao.selectById(id);
+        return this.dao.selectByPrimaryKey(id);
     }
 
     /**
@@ -76,7 +76,7 @@
         if(list_users.size() > 0) {
             for(int i = 0; i < list_users.size(); i++) {
                 VoUserInfo voUserInfo = list_users.get(i);
-                String userId = voUserInfo.getUserId();
+                String userId = voUserInfo.getId();
 
                 JSONArray array_roleIds = new JSONArray();
                 List<Map<String, Object>> list_roleIds = Optional.ofNullable(this.dao.getRoleIdsByUserId(Long.parseLong(userId))).orElse(new ArrayList<>());
@@ -221,7 +221,7 @@
         if(map.size() == 0) {
             return null;
         }
-        voUserInfo.setUserId(String.valueOf(userId));
+        voUserInfo.setId(String.valueOf(userId));
         voUserInfo.setUserName(map.get("userName").toString());
         voUserInfo.setPhone(map.get("phone").toString());
         voUserInfo.setBlockId(map.get("blockId").toString());
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml
index 28a280a..973e64a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml
@@ -3,7 +3,7 @@
         include: global, database, database-ym, database-pj
 user:
     defaultTrueRandomFalsePassword: true #true:閲囩敤榛樿瀵嗙爜锛宖alse:绯荤粺浜х敓闅忔満瀵嗙爜
-    defaultPassword: "ABC123"
+    defaultPassword: "abc_123"
 
 #actutor鐨剋eb绔彛
 management:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml
index 924901d..903a76c 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml
@@ -65,7 +65,7 @@
     # 涓哄寘閰嶇疆鐗规畩鐨凩og绾у埆锛屾柟渚胯皟璇曪紝
     # 涓嶅彈Loggers.Root.level闄愬埗
     Logger:
-      - name: com.dy.pipIrrGlobal.daoSe
+      - name: com.dy.pipIrrGlobal.daoPr
         additivity: false #鍘婚櫎閲嶅鐨刲og
         level: debug #杈撳嚭鏃ュ織绾у埆
         AppenderRef:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandCtrl.java
new file mode 100644
index 0000000..5133c35
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandCtrl.java
@@ -0,0 +1,43 @@
+package com.dy.pipIrrRemote.common;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.voRm.VoCommand;
+import com.dy.pipIrrRemote.common.qo.QoCommand;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-03 9:48
+ * @LastEditTime 2024-07-03 9:48
+ * @Description
+ */
+
+@Slf4j
+@RestController
+@RequestMapping(path="get")
+@RequiredArgsConstructor
+public class CommandCtrl {
+    private final CommandSv commandSv;
+
+    @GetMapping(path = "/command_history")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoCommand>>> get(QoCommand vo){
+        try {
+            QueryResultVo<List<VoCommand>> res = commandSv.getCommandHistories(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇鍏呭�艰褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java
index 585e387..0fc696d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandSv.java
@@ -15,13 +15,17 @@
 import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
 import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
+import com.dy.pipIrrGlobal.voRm.VoCommand;
 import com.dy.pipIrrGlobal.voRm.VoUnclosedParam;
 import com.dy.pipIrrGlobal.voRm.VoUnclosedValve;
 import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
+import com.dy.pipIrrRemote.common.qo.QoCommand;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.stereotype.Service;
 
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -179,4 +183,36 @@
     public SeClientCard geClientCardByCardId(Long cardId) {
         return seClientCardMapper.selectByPrimaryKey(cardId);
     }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍛戒护鏃ュ織鍘嗗彶璁板綍
+     * @param query
+     * @return
+     */
+    public QueryResultVo<List<VoCommand>> getCommandHistories(QoCommand query) {
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        // 瀹屽杽鏌ヨ璧锋鏃堕棿
+        String timeStart = query.getTimeStart();
+        String timeStop = query.getTimeStop();
+        if(timeStart != null) {
+            timeStart = timeStart + " 00:00:00";
+            query.setTimeStart(timeStart);
+        }
+        if(timeStop != null) {
+            timeStop = timeStop + " 23:59:59";
+            query.setTimeStop(timeStop);
+        }
+
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(query);
+
+        Long itemTotal = rmCommandHistoryMapper.getCommandHistoriesCount(params);
+
+        QueryResultVo<List<VoCommand>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = query.pageSize ;
+        rsVo.pageCurr = query.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = rmCommandHistoryMapper.getCommandHistories(params);
+        return rsVo ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Card.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Card.java
new file mode 100644
index 0000000..4194193
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Card.java
@@ -0,0 +1,27 @@
+package com.dy.pipIrrRemote.common.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-06-29 11:01
+ * @LastEditTime 2024-06-29 11:01
+ * @Description 鐗╃悊姘村崱
+ */
+
+@Data
+public class Card extends DtoBase {
+    public static final long serialVersionUID = 202406291102001L;
+
+    /**
+     * 姘村崱鍦板潃
+     */
+    @NotBlank(message = "姘村崱鍦板潃涓嶈兘涓虹┖")
+    private String cardAddr;
+
+    /**
+     * 姘村崱缂栧彿
+     */
+    private Long cardNum;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Usability.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Usability.java
new file mode 100644
index 0000000..b94ede4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Usability.java
@@ -0,0 +1,22 @@
+package com.dy.pipIrrRemote.common.dto;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-02 11:00
+ * @LastEditTime 2024-07-02 11:00
+ * @Description 缁堢鐢ㄦ按鏈夋晥鎬у璞�
+ */
+
+@Data
+public class Usability extends DtoBase {
+    public static final long serialVersionUID = 202407021101001L;
+
+    /**
+     * 缁堢鐢ㄦ按鏈夋晥鎬�
+     */
+    @NotNull(message = "缁堢鐢ㄦ按鏈夋晥鎬т笉鑳戒负绌�")
+    private Boolean valid;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/qo/QoCommand.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/qo/QoCommand.java
new file mode 100644
index 0000000..8491229
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/qo/QoCommand.java
@@ -0,0 +1,40 @@
+package com.dy.pipIrrRemote.common.qo;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-07-03 9:25
+ * @LastEditTime 2024-07-03 9:25
+ * @Description 鍛戒护鏃ュ織鍘嗗彶璁板綍鏌ヨ瑙嗗浘
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class QoCommand extends QueryConditionVo {
+
+    /**
+     * 鍛戒护鍚嶇О
+     */
+    private String commandName;
+
+    /**
+     * 鍛戒护缁撴灉锛�0-澶辫触锛�1-鎴愬姛
+     */
+    private Integer result;
+
+    /**
+     * 鏌ヨ璧峰鏃堕棿
+     */
+    private String timeStart;
+
+    /**
+     * 鏌ヨ鎴鏃堕棿
+     */
+    private String timeStop;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java
index 15af450..84668b9 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java
@@ -6,9 +6,7 @@
 import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com97Vo;
 import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com98Vo;
 import com.dy.common.mw.protocol.p206V202404.CodeV202404;
-import com.dy.common.mw.protocol.p206V202404.downVos.ComCd15Vo;
-import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo;
-import com.dy.common.mw.protocol.p206V202404.downVos.ComCd93_A3Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.*;
 import com.dy.common.util.IDLongGenerator;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
@@ -20,9 +18,7 @@
 import com.dy.pipIrrGlobal.voRm.VoUnclosedValve;
 import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
 import com.dy.pipIrrRemote.common.CommandSv;
-import com.dy.pipIrrRemote.common.dto.DtoBase;
-import com.dy.pipIrrRemote.common.dto.Recharge;
-import com.dy.pipIrrRemote.common.dto.ValveOpen;
+import com.dy.pipIrrRemote.common.dto.*;
 import com.dy.pipIrrRemote.result.RemoteResultCode;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.validation.Valid;
@@ -393,4 +389,164 @@
             return BaseResponseUtils.buildFail("绯荤粺鏆備笉鏀寔璇ュ崗璁�");
         }
     }
+
+    /**
+     * 寮哄埗鍏抽榾
+     * @param card
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "forced_close", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> forcedClose(@RequestBody @Valid Card card, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        Long intakeId = card.getIntakeId();
+        String cardAddr = card.getCardAddr();
+        Long operator = card.getOperator();
+        Long comId = idLongGenerator.generate();
+
+        // 鑾峰彇绯荤粺鍙傛暟
+        if(!setuped) {
+            setUp();
+        }
+
+        // 鍙栨按鍙D鎹㈤榾鎺у櫒鍦板潃鍙婇�氳鍗忚
+        JSONObject job_rtu = getRtu(intakeId, null);
+        if(job_rtu == null) {
+            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage());
+        }
+        String rtuAddr = job_rtu.getString("rtuAddr");
+        String protocol = job_rtu.getString("protocol");
+
+        String commandCode = null;
+        if(protocol.equals("p206V202404")) {
+            // 鑾峰彇鍔熻兘鐮�
+            commandCode = CodeV202404.cd_9C;
+
+            // 鍒涘缓瑙嗗浘
+            ComCd9CVo param = new ComCd9CVo();
+            param.controllerType = controllerType;
+            param.projectNo = projectNo;
+            param.icCardAddr = cardAddr;
+
+            /**
+             * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋�
+             * 1 鍑嗗鍙傛暟
+             * 2 璋冪敤鍏叡鏂规硶
+             */
+            Param myParam = new Param();
+            myParam.setComId(comId);
+            myParam.setCommandCode(commandCode);
+            myParam.setCommandName(CodeV202404.getCodeName(commandCode));
+            myParam.setIntakeId(intakeId);
+            myParam.setRtuAddr(rtuAddr);
+            myParam.setProtocol(protocol);
+            myParam.setParam(param);
+            myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm);
+            myParam.setOperator(operator);
+            return dealWithCommandResult(myParam);
+        } else if(protocol.equals("p206V1_0_1")) {
+            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION.getMessage());
+        } else {
+            return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�");
+        }
+    }
+
+    /**
+     * 璁惧缁堢鐢ㄦ按鎺у埗
+     * @param usability
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "usability", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> usability(@RequestBody @Valid Usability usability, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        Long intakeId = usability.getIntakeId();
+        Boolean valid = usability.getValid();
+        Long operator = usability.getOperator();
+        Long comId = idLongGenerator.generate();
+
+        // 鑾峰彇绯荤粺鍙傛暟
+        if(!setuped) {
+            setUp();
+        }
+
+        // 鍙栨按鍙D鎹㈤榾鎺у櫒鍦板潃鍙婇�氳鍗忚
+        JSONObject job_rtu = getRtu(intakeId, null);
+        if(job_rtu == null) {
+            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage());
+        }
+        String rtuAddr = job_rtu.getString("rtuAddr");
+        String protocol = job_rtu.getString("protocol");
+
+        String commandCode = null;
+        if(protocol.equals("p206V202404")) {
+            if(valid) {
+                // 鑾峰彇鍔熻兘鐮�
+                commandCode = CodeV202404.cd_30;
+
+                // 鍒涘缓瑙嗗浘
+                ComCd31Vo param = new ComCd31Vo();
+                param.controllerType = controllerType;
+                param.projectNo = projectNo;
+                param.valid = true;
+
+                /**
+                 * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋�
+                 * 1 鍑嗗鍙傛暟
+                 * 2 璋冪敤鍏叡鏂规硶
+                 */
+                Param myParam = new Param();
+                myParam.setComId(comId);
+                myParam.setCommandCode(commandCode);
+                myParam.setCommandName(CodeV202404.getCodeName(commandCode));
+                myParam.setIntakeId(intakeId);
+                myParam.setRtuAddr(rtuAddr);
+                myParam.setProtocol(protocol);
+                myParam.setParam(param);
+                myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm);
+                myParam.setOperator(operator);
+                return dealWithCommandResult(myParam);
+            }else {
+                // 鑾峰彇鍔熻兘鐮�
+                commandCode = CodeV202404.cd_31;
+
+                // 鍒涘缓瑙嗗浘
+                ComCd31Vo param = new ComCd31Vo();
+                param.controllerType = controllerType;
+                param.projectNo = projectNo;
+                param.valid = false;
+
+                /**
+                 * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋�
+                 * 1 鍑嗗鍙傛暟
+                 * 2 璋冪敤鍏叡鏂规硶
+                 */
+                Param myParam = new Param();
+                myParam.setComId(comId);
+                myParam.setCommandCode(commandCode);
+                myParam.setCommandName(CodeV202404.getCodeName(commandCode));
+                myParam.setIntakeId(intakeId);
+                myParam.setRtuAddr(rtuAddr);
+                myParam.setProtocol(protocol);
+                myParam.setParam(param);
+                myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm);
+                myParam.setOperator(operator);
+                return dealWithCommandResult(myParam);
+            }
+        } else if(protocol.equals("p206V1_0_1")) {
+            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION.getMessage());
+        } else {
+            return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�");
+        }
+    }
 }
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 7ff5012..cb6bb55 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
@@ -798,11 +798,17 @@
     @GetMapping(path = "/getRecharges")
     @SsoAop()
     public BaseResponse<QueryResultVo<List<VoRecharge>>> get(QoRecharge vo){
+        // 濡傛灉浼犲叆鐨勬槸10浣嶇殑姘村崱缂栧彿锛屽崌涓�17浣嶆按鍗$紪鍙�
+        if(vo != null && vo.getCardNum() != null) {
+            String cardNumS = String.valueOf(vo.getCardNum()).trim();
+            if(cardNumS.length() == 10) {
+                cardNumS = "100000" + cardNumS.substring(0,6) + "0" + cardNumS.substring(6);
+                vo.setCardNum(Long.parseLong(cardNumS));
+            }
+        }
+
         try {
             QueryResultVo<List<VoRecharge>> res = cardOperateSv.getRecharges(vo);
-            //if(res.itemTotal == 0) {
-            //    return BaseResponseUtils.buildFail(SellResultCode.No_RECHARGES.getMessage());
-            //}
             return BaseResponseUtils.buildSuccess(res);
         } catch (Exception e) {
             log.error("鑾峰彇鍏呭�艰褰曞紓甯�", e);
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 180bfe9..540a0e3 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
@@ -210,7 +210,19 @@
             return BaseResponseUtils.buildErrorMsg(SellResultCode.REPLACE_FAIL_WRITE_RECHARGE_ERROR.getMessage());
         }
 
-        return BaseResponseUtils.buildSuccess(true) ;
+        //return BaseResponseUtils.buildSuccess(true) ;
+
+        cardNumS = String.valueOf(cardNum).trim();
+        if(cardNumS.substring(0,2).equals("10")) {
+            cardNumS = cardNumS.substring(6,12) + cardNumS.substring(13);
+        }
+        cardNum = Long.parseLong(cardNumS);
+
+        Map map_response = new HashMap();
+        map_response.put("projectNo", String.format("%02x", Integer.parseInt(getProjectNo())));
+        map_response.put("orderNumber", rec);
+        map_response.put("cardNum", cardNum);
+        return BaseResponseUtils.buildSuccess(map_response) ;
     }
 
     /**
@@ -220,16 +232,16 @@
      */
     public QueryResultVo<List<VoRecharge>> getRecharges(QoRecharge queryVo) {
         //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿
-        String rechargeTimeStart = queryVo.rechargeTimeStart;
-        String rechargeTimeStop = queryVo.rechargeTimeStop;
-        if(rechargeTimeStart != null) {
-            rechargeTimeStart = rechargeTimeStart + " 00:00:00";
-            queryVo.setRechargeTimeStart(rechargeTimeStart);
-        }
-        if(rechargeTimeStop != null) {
-            rechargeTimeStop = rechargeTimeStop + " 23:59:59";
-            queryVo.setRechargeTimeStop(rechargeTimeStop);
-        }
+        //String rechargeTimeStart = queryVo.rechargeTimeStart;
+        //String rechargeTimeStop = queryVo.rechargeTimeStop;
+        //if(rechargeTimeStart != null) {
+        //    rechargeTimeStart = rechargeTimeStart + " 00:00:00";
+        //    queryVo.setRechargeTimeStart(rechargeTimeStart);
+        //}
+        //if(rechargeTimeStop != null) {
+        //    rechargeTimeStop = rechargeTimeStop + " 23:59:59";
+        //    queryVo.setRechargeTimeStop(rechargeTimeStop);
+        //}
 
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoRecharge.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoRecharge.java
index 543e308..bafa458 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoRecharge.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoRecharge.java
@@ -20,17 +20,20 @@
 @Schema(name = "IC鍗″厖鍊艰褰曟煡璇㈡潯浠�")
 public class QoRecharge extends QueryConditionVo {
 
-    @Schema(description = "鍐滄埛濮撳悕")
-    public String clientName;
+    private String clientName;
 
-    @Schema(description = "鍐滄埛缂栧彿")
-    private Long clientId;
+    private String clientNum;
 
-    @Schema(description = "IC鍗″彿")
-    public String cardAddr;
+    private Long cardNum;
 
-    @Schema(description = "浠樻鏂瑰紡")
-    public Integer paymentId;
+    //@Schema(description = "鍐滄埛缂栧彿")
+    //private Long clientId;
+
+    //@Schema(description = "IC鍗″彿")
+    //public String cardAddr;
+
+    //@Schema(description = "浠樻鏂瑰紡")
+    //public Integer paymentId;
 
     //@Schema(description = "鍏呭�兼椂闂確寮�濮�")
     //public LocalDateTime rechargeTimeStart;
@@ -38,9 +41,7 @@
     //@Schema(description = "鍏呭�兼椂闂確缁撴潫")
     //public LocalDateTime rechargeTimeStop;
 
-    @Schema(description = "鍏呭�兼椂闂確寮�濮�")
-    public String rechargeTimeStart;
+    //public String rechargeTimeStart;
 
-    @Schema(description = "鍏呭�兼椂闂確缁撴潫")
-    public String rechargeTimeStop;
+    //public String rechargeTimeStop;
 }
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 6d032a7..1bc71bc 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
@@ -62,25 +62,6 @@
     }
 
     /**
-     * 娣诲姞鍛戒护鏃ュ織
-     * @param po 鍛戒护鏃ュ織瀵硅薄
-     * @return 瀛楃涓茬被鍨嬬殑涓婚敭
-     */
-    public Long insert(RmCommandHistory po) {
-        rmCommandHistoryMapper.insert(po);
-        return po.getId();
-    }
-
-    /**
-     * 淇敼鍛戒护鏃ュ織淇℃伅
-     * @param po 鍛戒护鏃ュ織瀵硅薄
-     * @return 褰卞搷璁板綍鏁伴噺
-     */
-    public Integer update(RmCommandHistory po) {
-        return rmCommandHistoryMapper.updateByPrimaryKeySelective(po);
-    }
-
-    /**
      * 鏍规嵁鎿嶄綔鍛業D鑾峰彇鏈叧闃�璁板綍锛堝寘鍚湪绾挎儏鍐碉級
      * @param operator
      * @return
@@ -135,4 +116,33 @@
     public SeClientCard geClientCardByCardId(Long cardId) {
         return seClientCardMapper.selectByPrimaryKey(cardId);
     }
+
+    /**
+     * 娣诲姞鍛戒护鏃ュ織
+     * @param po 鍛戒护鏃ュ織瀵硅薄
+     * @return 瀛楃涓茬被鍨嬬殑涓婚敭
+     */
+    public Long insert(RmCommandHistory po) {
+        rmCommandHistoryMapper.insert(po);
+        return po.getId();
+    }
+
+    /**
+     * 淇敼鍛戒护鏃ュ織淇℃伅
+     * @param po 鍛戒护鏃ュ織瀵硅薄
+     * @return 褰卞搷璁板綍鏁伴噺
+     */
+    public Integer update(RmCommandHistory po) {
+        return rmCommandHistoryMapper.updateByPrimaryKeySelective(po);
+    }
+
+    /**
+     * 鍙栨按鍙e悕绉版崲鍙栨按鍙D锛屾壂鐮佸紑闃�浣跨敤
+     * @param intakeName
+     * @return
+     */
+    public Long getIntakeIdByName(String intakeName) {
+        return prIntakeMapper.getIntakeIdByName(intakeName);
+    }
+
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java
index 59f32ed..7cc13da 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java
@@ -70,10 +70,23 @@
         }
 
         Long intakeId = valve.getIntakeId();
+        String intakeName = valve.getIntakeName();
         Long vcId = valve.getVcId();
         Long operator = valve.getOperator();
         Long comId = idLongGenerator.generate();
 
+        if(intakeId == null && intakeName == null) {
+            return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage());
+        }
+
+        // intakeName鎹ntakeId
+        if(intakeId == null) {
+            intakeId = commandSv.getIntakeIdByName(intakeName);
+            if(intakeId == null) {
+                return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage());
+            }
+        }
+
         /**
          * 濡傛灉鍐滄埛閫夋嫨浜嗚櫄鎷熷崱锛屽垯浣跨敤璇ヨ櫄鎷熷崱
          * 濡傛灉鍐滄埛鏈�夋嫨铏氭嫙鍗★紝鍒欐牴鎹彇姘村彛ID鑾峰彇涓庝箣缁戝畾鐨勮櫄鎷熷崱
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/DtoBase.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/DtoBase.java
index 5bf46e0..e63cc1c 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/DtoBase.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/DtoBase.java
@@ -17,10 +17,14 @@
     /**
      * 鍙栨按鍙D
      */
-    @NotNull(message = "鍙栨按鍙d笉鑳戒负绌�")
     private Long intakeId;
 
     /**
+     * 鍙栨按鍙e悕绉�
+     */
+    private String intakeName;
+
+    /**
      * 鎿嶄綔浜�
      */
     @NotNull(message = "鎿嶄綔浜轰笉鑳戒负绌�")
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveOpen.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveOpen.java
index e7e3dcb..5c98775 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveOpen.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveOpen.java
@@ -20,9 +20,4 @@
      */
     private Long vcId;
 
-    /**
-     * 鐢ㄦ埛绫诲瀷 1-骞冲彴锛�2-APP
-     */
-    //@NotNull(message = "鎿嶄綔绫诲瀷涓嶈兘涓虹┖")
-    //private Integer userType;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java
index d50ed9b..df5e385 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java
@@ -19,9 +19,10 @@
      */
     GET_RESULT_IN_ONE_MINUTE(10001,"1鍒嗛挓鍚庡幓鏌ョ湅缁撴灉"),
     GET_RESULT_ERROR(10002, "鑾峰彇缁撴灉寮傚父"),
-    PLEASE_SELECT_A_VC(10002, "璇烽�夋嫨涓�寮犺櫄鎷熷崱"),
-    IN_USE_VC_CANNOT_OPEN_VALVE(10002, "浣跨敤涓櫄鎷熷崱涓嶈兘鐢ㄦ潵寮�闃�"),
-    THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION(10003, "璇ヨ澶囨棤姝ゅ悓鑳�"),
+    PLEASE_SELECT_A_VC(10003, "璇烽�夋嫨涓�寮犺櫄鎷熷崱"),
+    PLEASE_SELECT_A_INTAKE(10004, "璇烽�夋嫨涓�涓彇姘村彛"),
+    IN_USE_VC_CANNOT_OPEN_VALVE(10005, "浣跨敤涓櫄鎷熷崱涓嶈兘鐢ㄦ潵寮�闃�"),
+    THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION(10006, "璇ヨ澶囨棤姝ゅ悓鑳�"),
 
     /**
      * RTU

--
Gitblit v1.8.0