From e18c4a8ac170fea6e079047a27f72032c80eee67 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期一, 30 九月 2024 14:12:18 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml                                         |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml                                            |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/StartPoint.java                        |   33 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/StopPoint.java                         |   32 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/TrackPoint.java                        |   33 
 pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml                                                |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java                         |   74 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/InspectCtrl.java                           |  108 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardCtrl.java                 |   48 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java                 |   57 +
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java |   18 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeTrack.java                                        |   66 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java                             |   16 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/CardUsageQO.java             |   46 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml                                                 |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java                                        |    4 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientTempMapper.java                               |   36 
 pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml                                                            |   57 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoSimpleUser.java                                      |   28 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java     |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java                   |   69 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml                                             |  247 +++-
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientTempMapper.xml                                              |  125 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml                                               |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/Inspects.java                          |   48 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeInspectMapper.xml                                                |   91 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java                               |   32 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java            |    1 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml                                         |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml                                             |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml                                                   |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/OpenCloseValveQO.java              |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientTemp/ClientTempSv.java                     |   31 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeInspectMapper.java                                 |   27 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java                   |   75 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeTrackMapper.java                                   |   36 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml                                                    |   18 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeTrackMapper.xml                                                  |  111 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml                                      |   76 -
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientTemp/ClientTempCtrl.java                   |  117 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoExpend.java                                          |   70 +
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java                                 |   12 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoReceipt.java                    |    9 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRefund.java                                          |   61 +
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                                     |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml                                                |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReceipt.java                                         |   86 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java                       |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/resources/application.yml                                               |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml                                                |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml                                         |   10 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/PipIrrAppApplication.java                          |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java                       |   67 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java                    |   15 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java                            |    4 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClientTemp.java                                    |   62 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCardUsage.java                                       |   45 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java                                     |    9 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml                                              |   72 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java                                      |   11 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java                                     |    7 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java                                    |    3 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml                                   |   67 +
 pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/resources/application.yml                                           |    2 
 pipIrr-platform/pipIrr-global/src/main/resources/application-database-test.yml                                              |   69 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java                           |   28 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeInspect.java                                      |   59 +
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaCtrl.java                           |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java                                        |   81 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeNew.java                                     |   71 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java                              |   27 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml                                                  |   16 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java                               |   16 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryVo.java                              |    7 
 pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/InspectSv.java                             |   49 +
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java                         |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/resources/application.yml                                             |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-operation/src/main/resources/application.yml                                          |    2 
 78 files changed, 2,539 insertions(+), 316 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 db9713f..17081dc 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
@@ -345,9 +345,10 @@
                 job_data.remove("success");
                 job_data.put("intakeId", intakeId);
                 job_data.put("rtuAddr", rtuAddr);
-                job_data.put("vcNum", job_param.getString("icCardNo"));
-                job_data.put("orderNo", job_param.getString("orderNo"));
-
+                if(job_param != null) {
+                    job_data.put("vcNum", job_param.getString("icCardNo"));
+                    job_data.put("orderNo", job_param.getString("orderNo"));
+                }
                 response_CallBack = JSON.parseObject(job_response.toJSONString(), BaseResponse.class);
             }
         }
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 1a4779b..ea2d81e 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,7 +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.VoSimpleUser;
 import com.dy.pipIrrGlobal.voBa.VoUserInfo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -138,4 +138,11 @@
      * @return
      */
     List<String> getPhones();
+
+    /**
+     * 鑾峰彇绠�鍗曠敤鎴锋暟鎹垪琛紝鏁版嵁鍒楄〃鏌ヨ鏉′欢涓娇鐢�
+     * @return
+     */
+    List<VoSimpleUser> getSimpleUsers();
+
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeInspectMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeInspectMapper.java
new file mode 100644
index 0000000..86ab9e7
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeInspectMapper.java
@@ -0,0 +1,27 @@
+package com.dy.pipIrrGlobal.daoOp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoOp.OpeInspect;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 10:07
+ * @LastEditTime 2024-09-24 10:07
+ * @Description
+ */
+
+@Mapper
+public interface OpeInspectMapper extends BaseMapper<OpeInspect> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(OpeInspect record);
+
+    int insertSelective(OpeInspect record);
+
+    OpeInspect selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(OpeInspect record);
+
+    int updateByPrimaryKey(OpeInspect record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeTrackMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeTrackMapper.java
new file mode 100644
index 0000000..492a918
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoOp/OpeTrackMapper.java
@@ -0,0 +1,36 @@
+package com.dy.pipIrrGlobal.daoOp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoOp.OpeTrack;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 10:08
+ * @LastEditTime 2024-09-24 10:08
+ * @Description
+ */
+
+@Mapper
+public interface OpeTrackMapper extends BaseMapper<OpeTrack> {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(OpeTrack record);
+
+    int insertSelective(OpeTrack record);
+
+    OpeTrack selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(OpeTrack record);
+
+    int updateByPrimaryKey(OpeTrack record);
+
+    /**
+     * 鎵归噺娣诲姞宸℃杞ㄨ抗
+     * @param list
+     * @return
+     */
+    int insertTracks(List<OpeTrack> list);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
index 6002ef3..21ec5bd 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
+import com.dy.pipIrrGlobal.voRm.VoExpend;
 import com.dy.pipIrrGlobal.voRm.VoOpenCloseValve;
 import com.dy.pipIrrGlobal.voSt.VoClient;
 import com.dy.pipIrrGlobal.voSt.VoIntake;
@@ -263,4 +264,18 @@
      * @return
      */
     List<VoIntake> getNoOpenHaveCloseIntakes(Map<String, Object> params);
+
+    /**
+     * 鑾峰彇姘村崱娑堣垂璁板綍鏁伴噺锛岀鐞嗗钩鍙颁娇鐢�
+     * @param params
+     * @return
+     */
+    Long getExpendsCount(Map<String, Object> params);
+
+    /**
+     * 鑾峰彇姘村崱娑堣垂璁板綍锛岀鐞嗗钩鍙颁娇鐢�
+     * @param params
+     * @return
+     */
+    List<VoExpend> getExpends(Map<String, Object> params);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
index 0bbc69e..93d6b74 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
 import com.dy.pipIrrGlobal.voSe.*;
-import com.dy.pipIrrGlobal.voSt.VoClient;
 import com.dy.pipIrrGlobal.voSt.VoClientOpenCardCount;
 import com.dy.pipIrrGlobal.voSt.VoClientRechargeTotal;
 import org.apache.ibatis.annotations.Mapper;
@@ -46,6 +45,32 @@
      */
     List<VoRecharge> getRecharges(Map<?, ?> params);
 
+    /**
+     * 鑾峰彇鍏呭�艰褰曟暟閲忥紝绠$悊骞冲彴鍏呭�煎垪琛ㄤ娇鐢紝APP鏈娇鐢�
+     * @param params
+     * @return
+     */
+    Long getRechargesCountNew(Map<?, ?> params);
+
+    /**
+     * 鑾峰彇鍏呭�艰褰曪紝绠$悊骞冲彴鍏呭�煎垪琛ㄤ娇鐢紝APP鏈娇鐢�
+     * @param params
+     * @return
+     */
+    List<VoRechargeNew> getRechargesNew(Map<?, ?> params);
+
+    /**
+     * 鑾峰彇杩旇繕璁板綍鏁伴噺锛岀鐞嗗钩鍙板厖鍊煎垪琛ㄤ娇鐢�
+     * @param params
+     * @return
+     */
+    Long getRefundsCount(Map<?, ?> params);
+    /**
+     * 鑾峰彇杩旇繕璁板綍锛岀鐞嗗钩鍙板厖鍊煎垪琛ㄤ娇鐢�
+     * @param params
+     * @return
+     */
+    List<VoRefund> getRefunds(Map<?, ?> params);
 
     /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍鏁�
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
index f444fe3..c87cb33 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
@@ -6,6 +6,7 @@
 import com.dy.pipIrrGlobal.voSe.VoCardInfo1;
 import com.dy.pipIrrGlobal.voSe.VoCards;
 import com.dy.pipIrrGlobal.voSe.VoCards2;
+import com.dy.pipIrrGlobal.voSt.VoCardUsage;
 import com.dy.pipIrrGlobal.voWe.VoCards3;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -202,4 +203,35 @@
      * @return
      */
     Long getCountByCardAddrAndState(String cardAddr);
+
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐佃褰曟暟閲�
+     * @param params
+     * @return
+     */
+    List<VoCardUsage> getCardUsagesCount(Map<?, ?> params);
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐碉細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�
+     * @param params
+     * @return
+     */
+    List<VoCardUsage> getCardUsages(Map<?, ?> params);
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈靛唴姘村崱鍏呭�兼�昏
+     * @param timeStart
+     * @param timeStop
+     * @return
+     */
+    Float getTotalRecharge(@Param("timeStart")String timeStart, @Param("timeStop")String timeStop);
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈靛唴姘村崱娑堣垂鎬昏
+     * @param timeStart
+     * @param timeStop
+     * @return
+     */
+    Float getTotalConsumption(@Param("timeStart")String timeStart, @Param("timeStop")String timeStop);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientTempMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientTempMapper.java
new file mode 100644
index 0000000..bf7ff9b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientTempMapper.java
@@ -0,0 +1,36 @@
+package com.dy.pipIrrGlobal.daoSe;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeClientTemp;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-26 14:57
+ * @LastEditTime 2024-09-26 14:57
+ * @Description
+ */
+
+@Mapper
+public interface SeClientTempMapper extends BaseMapper<SeClientTemp> {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(SeClientTemp record);
+
+    int insertSelective(SeClientTemp record);
+
+    SeClientTemp selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(SeClientTemp record);
+
+    int updateByPrimaryKey(SeClientTemp record);
+
+    /**
+     * 鏍规嵁闀囧悕鑾峰彇鍐滄埛
+     * @param townName
+     * @return
+     */
+    List<SeClientTemp> getClientsByTownName(String townName );
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeInspect.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeInspect.java
new file mode 100644
index 0000000..85b2b9c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeInspect.java
@@ -0,0 +1,59 @@
+package com.dy.pipIrrGlobal.pojoOp;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 10:07
+ * @LastEditTime 2024-09-24 10:07
+ * @Description
+ */
+/**
+ * 宸℃琛�
+ */
+
+@TableName(value = "ope_inspect", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class OpeInspect implements BaseEntity {
+    public static final long serialVersionUID = 202409241013001L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 宸℃鍛業D
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @NotNull(message = "宸℃鍛業D涓嶈兘涓虹┖")
+    private Long inspectorId;
+
+    /**
+    * 寮�濮嬪贰妫�鏃堕棿
+    */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    /**
+    * 缁撴潫宸℃鏃堕棿
+    */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date stopTime;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeTrack.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeTrack.java
new file mode 100644
index 0000000..4496986
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoOp/OpeTrack.java
@@ -0,0 +1,66 @@
+package com.dy.pipIrrGlobal.pojoOp;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 10:08
+ * @LastEditTime 2024-09-24 10:08
+ * @Description
+ */
+/**
+ * 宸℃杞ㄨ抗琛�
+ */
+
+@TableName(value = "ope_track", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class OpeTrack implements BaseEntity {
+    public static final long serialVersionUID = 202409241013001L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    private Long id;
+
+    /**
+    * 宸℃ID
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @NotNull(message = "宸℃ID涓嶈兘涓虹┖")
+    private Long inspectId;
+
+    /**
+    * 缁忓害
+    */
+    @NotNull(message = "缁忓害涓嶈兘涓虹┖")
+    private BigDecimal lng;
+
+    /**
+    * 绾害
+    */
+    @NotNull(message = "绾害涓嶈兘涓虹┖")
+    private BigDecimal lat;
+
+    /**
+    * 鎵撶偣鏃堕棿
+    */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date locateTime;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClientTemp.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClientTemp.java
new file mode 100644
index 0000000..110024e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeClientTemp.java
@@ -0,0 +1,62 @@
+package com.dy.pipIrrGlobal.pojoSe;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-26 14:57
+ * @LastEditTime 2024-09-26 14:57
+ * @Description
+ */
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import lombok.*;
+
+/**
+ * 鍐滄埛涓存椂琛�
+ */
+
+@TableName(value = "se_client_temp", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class SeClientTemp implements BaseEntity {
+    public static final long serialVersionUID = 202409261459001L;
+
+    /**
+    * 涓婚敭
+    */
+    private Integer id;
+
+    /**
+    * 闀�
+    */
+    private String town;
+
+    /**
+    * 鏉�
+    */
+    private String village;
+
+    /**
+    * 濮撳悕
+    */
+    private String name;
+
+    /**
+    * 韬唤璇佸彿
+    */
+    private String idcard;
+
+    /**
+    * 鎵嬫満鍙�
+    */
+    private String phone;
+
+    /**
+    * 琛楅亾鍙婇棬鐗屽彿
+    */
+    private String address;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoSimpleUser.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoSimpleUser.java
new file mode 100644
index 0000000..903a63f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoSimpleUser.java
@@ -0,0 +1,28 @@
+package com.dy.pipIrrGlobal.voBa;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-19 13:54
+ * @LastEditTime 2024-09-19 13:54
+ * @Description 绠�鍗曠敤鎴疯鍥撅細鐢ㄦ埛ID銆佺敤鎴峰悕
+ */
+
+@Data
+public class VoSimpleUser {
+    private static final long serialVersionUID = 202409191355001L;
+
+    /**
+     * 鐢ㄦ埛ID
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long userId;
+
+    /**
+     * 鐢ㄦ埛鍚�
+     */
+    private String userName;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoExpend.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoExpend.java
new file mode 100644
index 0000000..92eed8d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoExpend.java
@@ -0,0 +1,70 @@
+package com.dy.pipIrrGlobal.voRm;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-14 17:17
+ * @LastEditTime 2024-09-14 17:17
+ * @Description 娑堣�楄鍥惧璞★紝姘村崱娑堣�楄褰�
+ */
+@Data
+@JsonPropertyOrder({"clientName", "clientNum", "cardNum", "intakeName", "rtuAddr", "moneyAmount", "waterAmount", "duration", "operateTime"})
+public class VoExpend {
+    private static final long serialVersionUID = 202409141721001L;
+
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    private String clientName;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    private String clientNum;
+
+    /**
+     * 姘村崱缂栧彿
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long cardNum;
+
+    /**
+     * 鍙栨按鍙g紪鍙�
+     */
+    private String intakeName;
+
+    /**
+     * 闃�鎺у櫒鍦板潃
+     */
+    private String rtuAddr;
+
+    /**
+     * 鏈鑺辫垂閲戦
+     */
+    private Float moneyAmount;
+
+    /**
+     * 鏈鐢ㄦ按閲�
+     */
+    private Float waterAmount;
+
+    /**
+     * 鏈鐢ㄦ按鏃堕暱
+     */
+    private Integer duration;
+
+    /**
+     * 鎿嶄綔鏃堕棿
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date operateTime;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java
index f33c3e6..7e16be5 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java
@@ -23,6 +23,7 @@
     private static final long serialVersionUID = 1L;
 
     @Schema(title = "ID")
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
     private Long id;
 
     @Schema(title = "鍐滄埛濮撳悕")
@@ -46,9 +47,13 @@
     @Schema(title = "琛ュ崱閲戦")
     private Double reissueAmount;
 
-    @Schema(title = "鏀粯鏂瑰紡")
-    @JSONField(serializeUsing= ObjectWriterImplToString.class)
-    private Long paymentId;
+    //@Schema(title = "鏀粯鏂瑰紡")
+    //@JSONField(serializeUsing= ObjectWriterImplToString.class)
+    //private Long paymentId;
+    /**
+     * 鏀粯鏂瑰紡鍚嶇О
+     */
+    private String paymentName;
 
     @Schema(title = "鎿嶄綔浜�")
     private String operator;
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReceipt.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReceipt.java
index fad9f78..502bd8a 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReceipt.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReceipt.java
@@ -1,7 +1,8 @@
 package com.dy.pipIrrGlobal.voSe;
 
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -15,62 +16,103 @@
  */
 
 @Data
-@Schema(title = "鏀舵嵁瑙嗗浘瀵硅薄")
 public class VoReceipt {
     private static final long serialVersionUID = 202402011037001L;
 
-    @Schema(title = "鏀堕摱鍛業D")
+    /**
+     * 鏀堕摱鍛業D
+     */
     private String cashierId;
 
-    @Schema(title = "璁㈠崟鍙�")
-    private String orderNumber;
+    /**
+     * 璁㈠崟鍙�
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long orderNumber;
 
-    @Schema(title = "闀囧悕绉�")
+    /**
+     * 闀囧悕绉�
+     */
     private String townName;
 
-    @Schema(title = "鏉戝悕绉�")
+    /**
+     * 鏉戝悕绉�
+     */
     private String villageName;
 
-    @Schema(title = "鍐滄埛濮撳悕")
+    /**
+     * 鍐滄埛濮撳悕
+     */
     private String name;
 
-    @Schema(title = "鐢佃瘽")
+    /**
+     * 鐢佃瘽
+     */
     private String phone;
 
-    @Schema(title = "鍐滄埛缂栧彿")
-    private String clientNum;
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long clientNum;
 
-    @Schema(title = "姘村崱缂栧彿")
-    private String cardNum;
+    /**
+     * 姘村崱缂栧彿
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long cardNum;
 
-    @Schema(title = "涓氬姟绫诲瀷")
+    /**
+     * 涓氬姟绫诲瀷
+     */
     private String operateType;
 
-    @Schema(title = "璐按閲戦")
+    /**
+     * 璐按閲戦
+     */
     private Double waterCost;
 
-    @Schema(title = "璐崱閲戦")
+    /**
+     * 璧犻�侀噾棰�
+     */
+    private Double gift;
+
+    /**
+     * 璐崱閲戦
+     */
     private Double cardCost;
 
-    @Schema(title = "鏀惰垂閲戦")
+    /**
+     * 鏀惰垂閲戦
+     */
     private Double amount;
 
-    @Schema(title = "姘村崱浣欓")
+    /**
+     * 姘村崱浣欓
+     */
     private Double money;
 
-    @Schema(title = "鏀粯鏂瑰紡")
+    /**
+     * 鏀粯鏂瑰紡
+     */
     private String paymentName;
 
-    @Schema(title = "鎿嶄綔浜�")
+    /**
+     * 鎿嶄綔浜�
+     */
     private String operatorName;
 
+    /**
+     * 鎿嶄綔鏃堕棿
+     */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @Schema(title = "鎿嶄綔鏃堕棿")
     private Date operateTime;
 
+    /**
+     * 褰撳墠鏃堕棿
+     */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @Schema(title = "褰撳墠鏃堕棿")
     private Date currentTime;
 }
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 1434dd0..4242361 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
@@ -4,7 +4,7 @@
 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;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -18,63 +18,112 @@
  */
 
 @Data
-@Schema(title = "鍏呭�艰褰曡鍥惧璞�")
+@JsonPropertyOrder({ "opeId", "cardId", "clientName", "phone", "idCard", "clientNum", "villageName", "address", "money", "cardNum", "cardCost", "amount", "gift", "refundAmount", "afterRecharge", "paymentName", "price", "opr"})
 public class VoRecharge implements BaseEntity {
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 202409211025001L;
 
-    //@Schema(title = "ID")
-    //private String id;
-
+    /**
+     * 鎿嶄綔ID
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     private Long opeId;
 
+    /**
+     * 姘村崱ID
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     private Long cardId;
 
-    @Schema(title = "鍐滄埛濮撳悕")
+    /**
+     * 鍐滄埛濮撳悕
+     */
     private String clientName;
 
+    /**
+     * 鎵嬫満鍙�
+     */
     private String phone;
 
+    /**
+     * 韬唤璇佸彿
+     */
     private String idCard;
 
-    @Schema(title = "鍐滄埛缂栧彿")
+    /**
+     * 鍐滄埛缂栧彿
+     */
     private String clientNum;
 
+    /**
+     * 鏉戝浼氬悕绉�
+     */
+    private String villageName;
+
+    /**
+     * 灞呬綇鍦板潃
+     */
     private String address;
 
     /**
-     * 姘村崱浣欓
+     * 姘村崱鏈�缁堜綑棰�
      */
     private Float money;
 
+    /**
+     * 姘村崱缂栧彿
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     private Long cardNum;
 
+    /**
+     * 璐崱璐圭敤
+     */
     private Integer cardCost;
 
-    @Schema(title = "鍏呭�奸噾棰�")
+    /**
+     * 鏈鍏呭�奸噾棰�
+     */
     private Float amount;
 
-    @Schema(title = "杩斿洖閲戦")
+    /**
+     * 鏈璧犻�侀噾棰�
+     */
+    private Float gift;
+
+    /**
+     * 杩旇繕閲戦
+     */
     private Float refundAmount;
 
-    @Schema(title = "鍏呭�煎悗閲戦")
+    /**
+     * 鍏呭�煎悗閲戦锛屽厖鍊兼椂浣欓 + 鏈鍏呭�奸噾棰� + 鏈璧犻�侀噾棰�
+     */
     private Float afterRecharge;
 
-    @Schema(title = "鏀粯鏂瑰紡")
+    /**
+     * 鏀粯鏂瑰紡
+     */
     private String paymentName;
 
-    @Schema(title = "姘翠环")
+    /**
+     * 姘翠环
+     */
     private Float price;
 
-    @Schema(title = "鎿嶄綔浜�")
+    /**
+     * 鎿嶄綔浜�
+     */
     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")
-    @Schema(title = "鎿嶄綔鏃堕棿")
     private Date operateDt;
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeNew.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeNew.java
new file mode 100644
index 0000000..178d753
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRechargeNew.java
@@ -0,0 +1,71 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-14 15:50
+ * @LastEditTime 2024-09-14 15:50
+ * @Description 鍏呭�艰褰曡鍥惧璞★紝绠$悊骞冲彴鍏呭�煎垪琛ㄤ娇鐢紝APP鏈娇鐢�
+ */
+
+@Data
+@JsonPropertyOrder({"clientName", "clientNum", "cardNum", "amount", "gift", "afterRecharge", "paymentName", "operator", "operateTime"})
+public class VoRechargeNew {
+    private static final long serialVersionUID = 202409141554001L;
+
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    private String clientName;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    private String clientNum;
+
+    /**
+     * 姘村崱缂栧彿
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long cardNum;
+
+    /**
+     * 鍏呭�奸噾棰�
+     */
+    private Float amount;
+
+    /**
+     * 璧犻�侀噾棰�
+     */
+    private Float gift;
+
+    /**
+     * 鍏呭�煎悗浣欓
+     */
+    private Float afterRecharge;
+
+    /**
+     * 鏀粯鏂瑰紡
+     */
+    private String paymentName;
+
+    /**
+     * 鎿嶄綔浜�
+     */
+    private String operator;
+
+    /**
+     * 鎿嶄綔鏃堕棿
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date operateTime;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRefund.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRefund.java
new file mode 100644
index 0000000..b38e4ad
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRefund.java
@@ -0,0 +1,61 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-18 15:04
+ * @LastEditTime 2024-09-18 15:04
+ * @Description 杩旇繕瑙嗗浘瀵硅薄
+ */
+
+@Data
+@JsonPropertyOrder({"clientName", "clientNum", "cardNum", "money", "refundAmount", "operator", "operateTime"})
+public class VoRefund {
+    private static final long serialVersionUID = 202409181505001L;
+
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    private String clientName;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    private String clientNum;
+
+    /**
+     * 姘村崱缂栧彿
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long cardNum;
+
+    /**
+     * 杩旇繕鍓嶄綑棰�
+     */
+    private Float money;
+
+    /**
+     * 杩旇繕閲戦
+     */
+    private Float refundAmount;
+
+    /**
+     * 鎿嶄綔浜�
+     */
+    private String operator;
+
+    /**
+     * 鎿嶄綔鏃堕棿
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date operateTime;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java
index d65d5c7..57b15a9 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java
@@ -113,9 +113,8 @@
     /**
      * 浣欓
      */
-    @JSONField(serializeUsing= ObjectWriterImplToString.class)
     @ColumnWidth(15)
-    private Long money;
+    private Double money;
 
     /**
      * 浠樻鏂瑰紡
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCardUsage.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCardUsage.java
new file mode 100644
index 0000000..d884cf7
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCardUsage.java
@@ -0,0 +1,45 @@
+package com.dy.pipIrrGlobal.voSt;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-13 16:14
+ * @LastEditTime 2024-09-13 16:14
+ * @Description 姘村崱浣跨敤缁熻瑙嗗浘
+ */
+
+@Data
+@JsonPropertyOrder({ "clientName", "cardNum", "totalRecharge", "totalConsumption", "balance"})
+public class VoCardUsage {
+    private static final long serialVersionUID = 202409131615001L;
+
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    private String clientName;
+
+    /**
+     * 姘村崱缂栧彿
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    private Long cardNum;
+
+    /**
+     * 鍏呭�奸噾棰濆悎璁�
+     */
+    private Float totalRecharge;
+
+    /**
+     * 娑堣垂閲戦鍚堣
+     */
+    private Float totalConsumption;
+
+    /**
+     * 浣欓
+     */
+    private Float balance;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-database-test.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-database-test.yml
new file mode 100644
index 0000000..4e972d0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-database-test.yml
@@ -0,0 +1,69 @@
+# 鏁版嵁婧愰厤缃�
+spring:
+  datasource: #閰嶇疆鏁版嵁婧�
+    test:
+      #name: test
+      type: com.alibaba.druid.pool.DruidDataSource
+      driverClassName: com.mysql.cj.jdbc.Driver
+#      url: jdbc:mysql://192.168.40.166:3306/pipIrr_test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
+#      url: jdbc:mysql://8.130.130.233:3306/pipIrr_test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
+      url: jdbc:mysql://127.0.0.1:3306/pipIrr_test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
+      username: root
+      password: dysql,;.abc!@#
+      druid:
+        # 鏁版嵁婧愬悕绉帮細褰撳瓨鍦ㄥ涓暟鎹簮鏃讹紝璁剧疆鍚嶅瓧鍙互寰堟柟渚跨殑鏉ヨ繘琛屽尯鍒�,榛樿鑷姩鐢熸垚鍚嶇О锛屾牸寮忔槸锛�"DataSource-" + System.identityHashCode(this)
+        name: druid-mysql-test
+        #閰嶇疆鍒濆鍖栧ぇ灏忋�佹渶灏忋�佹渶澶�
+        initialSize: 10
+        minIdle: 10
+        maxActive: 100
+        # 鑾峰彇杩炴帴鏃舵渶澶х瓑寰呮椂闂�,鍗曚綅姣銆傞厤缃簡maxWait涔嬪悗,缂虹渷鍚敤鍏钩閿�,骞跺彂鏁堢巼浼氭湁鎵�涓嬮檷,濡傛灉闇�瑕佸彲浠ラ�氳繃閰嶇疆useUnfairLock灞炴�т负true浣跨敤闈炲叕骞抽攣
+        maxWait: 60000
+        #閰嶇疆闂撮殧澶氫箙杩涜涓�娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆绉掋�� 榛樿鏄�60s锛屽お闀垮彲鑳戒細瀵艰嚧鏃犳硶鍙婃椂妫�娴嬪埌杩炴帴涓柇
+        timeBetweenEvictionRunsMillis: 60000
+        #閰嶇疆涓�涓繛鎺ュ湪杩炴帴姹犱腑鐨勬渶灏忕敓瀛樻椂闂淬�佹渶澶х敓瀛樻椂闂达紝瓒呰繃鏈�澶х敓瀛樻椂闂翠細琚Щ闄わ紝鍗曚綅姣銆�
+        minEvictableIdleTimeMillis: 300000
+        maxEvictableIdleTimeMillis: 900000
+        #鎺㈡椿銆侀獙璇侀摼鎺ユ湁鏁堟�х殑鏌ヨ锛屾柊鐗堟湰榛樿浣跨敤mysqlPing浠f浛
+        #validation-query: select 1 #娉ㄩ噴鎺夛紝閲囩敤榛樿鐨刴ysqlPing
+        #閰嶇疆浠庤繛鎺ユ睜鑾峰彇杩炴帴鏃讹紝褰撹繛鎺ョ┖闂叉椂闂村ぇ浜巘imeBetweenEvictionRunsMillis鏃舵槸鍚︽鏌ヨ繛鎺ユ湁鏁堟�э紝true姣忔閮芥鏌ワ紱false涓嶆鏌ャ��
+        testWhileIdle: true
+        #閰嶇疆浠庤繛鎺ユ睜鑾峰彇杩炴帴鏃跺拰鍚戣繛鎺ユ睜褰掕繕杩炴帴鏃讹紝鏄惁妫�鏌ヨ繛鎺ユ湁鏁堟��
+        #姣忔鑾峰彇鎴栧綊杩樿繛鎺ラ兘妫�娴嬪お棰戠箒锛岄櫎闈炵壒鍒噸瑕佹垨缃戠粶鐗瑰埆涓嶅彲闈犵瓑鎯呭喌锛屽缓璁敤testWhileIdle + timeBetweenEvictionRunsMillis浠f浛銆�-->
+        testOnBorrow: false
+        testOnReturn: false
+        #閰嶇疆鏄惁瀹氭湡鎺㈡椿銆佹帰娲婚棿闅�, 榛樿120s
+        keepAlive: true
+        #keepAliveBetweenTimeMillis must be greater than timeBetweenEvictionRunsMillis
+        keepAliveBetweenTimeMillis: 1200000
+        #閰嶇疆涓�涓繛鎺ユ渶澶т娇鐢ㄦ鏁帮紝閬垮厤闀挎椂闂翠娇鐢ㄧ浉鍚岃繛鎺ラ�犳垚鏈嶅姟鍣ㄧ璐熻浇涓嶅潎琛°��
+        phyMaxUseCount: 1000
+        #鏄惁缂撳瓨preparedStatement锛屼篃灏辨槸PSCache銆侾SCache瀵规敮鎸佹父鏍囩殑鏁版嵁搴撴�ц兘鎻愬崌宸ㄥぇ锛屾瘮濡傝oracle銆傚湪mysql涓嬪缓璁叧闂��
+        poolPreparedStatements: false
+        #瑕佸惎鐢≒SCache锛屽繀椤婚厤缃ぇ浜�0锛屽綋澶т簬0鏃讹紝poolPreparedStatements鑷姩瑙﹀彂淇敼涓簍rue銆傚湪Druid涓紝涓嶄細瀛樺湪Oracle涓婸SCache鍗犵敤鍐呭瓨杩囧鐨勯棶棰橈紝鍙互鎶婅繖涓暟鍊奸厤缃ぇ涓�浜涳紝姣斿璇�100
+        maxOpenPreparedStatements: -1
+        #鎸囧畾姣忎釜杩炴帴涓奝SCache鐨勫ぇ灏�
+        maxPoolPreparedStatementPerConnectionSize: 20
+        #灞炴�х被鍨嬫槸瀛楃涓诧紝閫氳繃鍒悕鐨勬柟寮忛厤缃墿灞曟彃浠讹紝甯哥敤鐨勬彃浠舵湁锛�
+        #鐩戞帶缁熻鐢ㄧ殑filter:stat锛屾棩蹇楃敤鐨刦ilter:log4j锛岄槻寰ql娉ㄥ叆鐨刦ilter:wall
+        #filters: stat,wall,config
+        filters: wall,config
+        webStatFilter:
+          # 娣诲姞杩囨护瑙勫垯
+          urlPattern: /*
+          # 蹇界暐杩囨护鏍煎紡
+          exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
+          statViewServlet:
+            # 璁剧疆ip鐧藉悕鍗�
+            # allow: 127.0.0.1
+            # 璁剧疆ip榛戝悕鍗曪紝浼樺厛绾ч珮浜庣櫧鍚嶅崟
+            deny:
+            # 璁剧疆鎺у埗鍙扮鐞嗙敤鎴�
+            #  loginUsername: root
+            #  loginPassword: root
+            # 鏄惁鍙互閲嶇疆鏁版嵁
+            resetEnable: false
+            # 寮�鍚痙ruid鐩戞帶椤甸潰
+            #enabled: true
+            enabled: false
+
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml
index f368ac3..4771d1f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-database.yml
@@ -5,4 +5,4 @@
         allow-bean-definition-overriding: true #璁剧疆涓簍rue鏃讹紝鍚庡畾涔夌殑bean浼氳鐩栦箣鍓嶅畾涔夌殑鐩稿悓鍚嶇О鐨刡ean
     datasource: #閰嶇疆鏁版嵁婧�
         #澶氫釜鏁版嵁婧愬悕绉板湪姝ら厤缃紝瑕佹眰涓巗pring銆俤atasource銆俒ym][pj]涓殑涓�鑷�
-        names: ym, pj
+        names: ym, pj, test
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index 54ca603..610b648 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -155,6 +155,10 @@
         comSendUrl: "http://127.0.0.1:8071/rtuMw/com/send"
         rtuLogFileUrl: "http://127.0.0.1:8071/rtuMw/com/rtuLogFile"
         rtuLogTextUrl: "http://127.0.0.1:8071/rtuMw/com/rtuLogText"
+    test:
+        comSendUrl: "http://127.0.0.1:8072/rtuMw/com/send"
+        rtuLogFileUrl: "http://127.0.0.1:8072/rtuMw/com/rtuLogFile"
+        rtuLogTextUrl: "http://127.0.0.1:8072/rtuMw/com/rtuLogText"
     #鐩戞祴鎺у埗妯″潡鍥炶皟鍦板潃
     rtuCallbackUrl_rm: "http://127.0.0.1:8081/remote/comRes/receive"
     #寰俊灏忕▼搴忓洖璋冨湴鍧�
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml b/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml
index b28eb79..55fe57e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/init-config.xml
@@ -18,16 +18,15 @@
                     </dictItem>
                 </dict>
             </dictionaries>
-            <user name="瓒呯骇绠$悊鍛�" phone="admin" password="admin" supperAdmin="1" />
+            <user name="瓒呯骇绠$悊鍛�" phone="admin" password="dyyjy" supperAdmin="1" />
             <payments>
                 <item1 name="鐜伴噾"/>
-                <item2 name="寰俊鏀粯"/>
-                <item3 name="鏀粯瀹濇敮浠�"/>
-                <item4 name="閾惰杞处"/>
+                <item2 name="POS鏈�"/>
+                <item3 name="閾惰杞处"/>
             </payments>
             <settings>
-                <item1 item_name="lng" item_value="101.87345" remarks="缁忓害"/>
-                <item2 item_name="lat" item_value="25.70424" remarks="绾害"/>
+                <item1 item_name="lng" item_value="101.89878161146011" remarks="缁忓害"/>
+                <item2 item_name="lat" item_value="25.673963608371185" remarks="绾害"/>
             </settings>
             <waterTypes>
                 <item1 typeName="鐏屾簤鐢ㄦ按"/>
@@ -94,5 +93,51 @@
                 <item8 defaultValue = "80" unit = "3" sort = "4" type = "2"/>
             </irrigateProfile>
         </org2>
+        <org3 tag="test" name="娴嬭瘯" enable="true">
+            <districts>
+                <province name="澶╂触甯�" num="12" level="0">
+                    <city name="甯傝緰鍖�" num="01" level="1">
+                        <country name="姝︽竻鍖�" num="14" level="2" />
+                    </city>
+                </province>
+            </districts>
+            <dictionaries>
+                <dict code="protocol" title="鍗忚" valueType="2">
+                    <dictItem>
+                        <item1 dictCode="protocol" value="p206V1_0_1" name="鑰佸崗璁�" status="1" sort="0" />
+                        <item2 dictCode="protocol" value="p206V202404" name="鏂板崗璁�" status="0" sort="1" />
+                    </dictItem>
+                </dict>
+            </dictionaries>
+            <user name="瓒呯骇绠$悊鍛�" phone="admin" password="admin" supperAdmin="1" />
+            <payments>
+                <item1 name="鐜伴噾"/>
+                <item2 name="寰俊鏀粯"/>
+                <item3 name="鏀粯瀹濇敮浠�"/>
+                <item4 name="閾惰杞处"/>
+            </payments>
+            <settings>
+                <item1 item_name="lng" item_value="101.87345" remarks="缁忓害"/>
+                <item2 item_name="lat" item_value="25.70424" remarks="绾害"/>
+            </settings>
+            <waterTypes>
+                <item1 typeName="鐏屾簤鐢ㄦ按"/>
+                <item2 typeName="宸ヤ笟鐢ㄦ按"/>
+                <item3 typeName="鐢熸椿鐢ㄦ按"/>
+                <item4 typeName="鍏绘畺鐢ㄦ按"/>
+                <item5 typeName="缁垮寲鐢ㄦ按"/>
+            </waterTypes>
+            <waterPrice price="0.90" />
+            <irrigateProfile>
+                <item1 defaultValue = "10" unit = "2" sort = "1" type = "1"/>
+                <item2 defaultValue = "20" unit = "2" sort = "2" type = "1" />
+                <item3 defaultValue = "1" unit = "1" sort = "3" type = "1"/>
+                <item4 defaultValue = "2" unit = "1" sort = "4" type = "1"/>
+                <item5 defaultValue = "20" unit = "3" sort = "1" type = "2"/>
+                <item6 defaultValue = "30" unit = "3" sort = "2" type = "2"/>
+                <item7 defaultValue = "50" unit = "3" sort = "3" type = "2"/>
+                <item8 defaultValue = "80" unit = "3" sort = "4" type = "2"/>
+            </irrigateProfile>
+        </org3>
     </orgs>
 </config>
\ No newline at end of file
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 fa6d313..b8f7e0d 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
@@ -276,8 +276,8 @@
         name AS userName,
         disabled AS stateId,
         (CASE
-        WHEN disabled = 0 THEN "姝e父"
-        WHEN disabled = 1 THEN "宸茬鐢�"
+        WHEN disabled = 0 THEN '姝e父'
+        WHEN disabled = 1 THEN '宸茬鐢�'
         END) AS stateName,
         CAST(blockId AS char) AS blockId,
         (SELECT name FROM ba_block WHERE id = user.blockId) AS blockName
@@ -310,8 +310,8 @@
             name AS userName,
             disabled AS stateId,
             (CASE
-                 WHEN disabled = 0 THEN "姝e父"
-                 WHEN disabled = 1 THEN "宸茬鐢�"
+                 WHEN disabled = 0 THEN '姝e父'
+                 WHEN disabled = 1 THEN '宸茬鐢�'
                 END) AS stateName,
             CAST(blockId AS char) AS blockId,
             (SELECT name FROM ba_block WHERE id = user.blockId) AS blockName
@@ -370,4 +370,14 @@
     <select id="getPhones" resultType="java.lang.String">
         SELECT phone FROM ba_user WHERE deleted = 0 and disabled = 0
     </select>
+
+    <!--鑾峰彇绠�鍗曠敤鎴锋暟鎹垪琛�-->
+    <select id="getSimpleUsers" resultType="com.dy.pipIrrGlobal.voBa.VoSimpleUser">
+        SELECT
+            id AS userId,
+            name AS userName
+        FROM  ba_user
+        WHERE disabled = 0 AND deleted = 0
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeInspectMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeInspectMapper.xml
new file mode 100644
index 0000000..888dd76
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeInspectMapper.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoOp.OpeInspectMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoOp.OpeInspect">
+    <!--@mbg.generated-->
+    <!--@Table ope_inspect-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="inspector_id" jdbcType="BIGINT" property="inspectorId" />
+    <result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
+    <result column="stop_time" jdbcType="TIMESTAMP" property="stopTime" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, inspector_id, start_time, stop_time
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from ope_inspect
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from ope_inspect
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeInspect">
+    <!--@mbg.generated-->
+    insert into ope_inspect (id, inspector_id, start_time, 
+      stop_time)
+    values (#{id,jdbcType=BIGINT}, #{inspectorId,jdbcType=BIGINT}, #{startTime,jdbcType=TIMESTAMP}, 
+      #{stopTime,jdbcType=TIMESTAMP})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeInspect">
+    <!--@mbg.generated-->
+    insert into ope_inspect
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="inspectorId != null">
+        inspector_id,
+      </if>
+      <if test="startTime != null">
+        start_time,
+      </if>
+      <if test="stopTime != null">
+        stop_time,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="inspectorId != null">
+        #{inspectorId,jdbcType=BIGINT},
+      </if>
+      <if test="startTime != null">
+        #{startTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="stopTime != null">
+        #{stopTime,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeInspect">
+    <!--@mbg.generated-->
+    update ope_inspect
+    <set>
+      <if test="inspectorId != null">
+        inspector_id = #{inspectorId,jdbcType=BIGINT},
+      </if>
+      <if test="startTime != null">
+        start_time = #{startTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="stopTime != null">
+        stop_time = #{stopTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeInspect">
+    <!--@mbg.generated-->
+    update ope_inspect
+    set inspector_id = #{inspectorId,jdbcType=BIGINT},
+      start_time = #{startTime,jdbcType=TIMESTAMP},
+      stop_time = #{stopTime,jdbcType=TIMESTAMP}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeTrackMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeTrackMapper.xml
new file mode 100644
index 0000000..ebb150d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/OpeTrackMapper.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoOp.OpeTrackMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoOp.OpeTrack">
+    <!--@mbg.generated-->
+    <!--@Table ope_track-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="inspect_id" jdbcType="BIGINT" property="inspectId" />
+    <result column="lng" jdbcType="DECIMAL" property="lng" />
+    <result column="lat" jdbcType="DECIMAL" property="lat" />
+    <result column="locate_time" jdbcType="TIMESTAMP" property="locateTime" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, inspect_id, lng, lat, locate_time
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from ope_track
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from ope_track
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeTrack">
+    <!--@mbg.generated-->
+    insert into ope_track (id, inspect_id, lng, 
+      lat, locate_time)
+    values (#{id,jdbcType=BIGINT}, #{inspectId,jdbcType=BIGINT}, #{lng,jdbcType=DECIMAL}, 
+      #{lat,jdbcType=DECIMAL}, #{locateTime,jdbcType=TIMESTAMP})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeTrack">
+    <!--@mbg.generated-->
+    insert into ope_track
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="inspectId != null">
+        inspect_id,
+      </if>
+      <if test="lng != null">
+        lng,
+      </if>
+      <if test="lat != null">
+        lat,
+      </if>
+      <if test="locateTime != null">
+        locate_time,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="inspectId != null">
+        #{inspectId,jdbcType=BIGINT},
+      </if>
+      <if test="lng != null">
+        #{lng,jdbcType=DECIMAL},
+      </if>
+      <if test="lat != null">
+        #{lat,jdbcType=DECIMAL},
+      </if>
+      <if test="locateTime != null">
+        #{locateTime,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeTrack">
+    <!--@mbg.generated-->
+    update ope_track
+    <set>
+      <if test="inspectId != null">
+        inspect_id = #{inspectId,jdbcType=BIGINT},
+      </if>
+      <if test="lng != null">
+        lng = #{lng,jdbcType=DECIMAL},
+      </if>
+      <if test="lat != null">
+        lat = #{lat,jdbcType=DECIMAL},
+      </if>
+      <if test="locateTime != null">
+        locate_time = #{locateTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoOp.OpeTrack">
+    <!--@mbg.generated-->
+    update ope_track
+    set inspect_id = #{inspectId,jdbcType=BIGINT},
+      lng = #{lng,jdbcType=DECIMAL},
+      lat = #{lat,jdbcType=DECIMAL},
+      locate_time = #{locateTime,jdbcType=TIMESTAMP}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+  <!--鎵归噺娣诲姞宸℃杞ㄨ抗-->
+  <insert id="insertTracks">
+    INSERT INTO ope_track (id, inspect_id, lng, lat, locate_time)
+    VALUES
+    <foreach collection="list" item="item" index="index" separator=",">
+      (#{item.id}, #{item.inspectId}, #{item.lng}, #{item.lat}, #{item.locateTime})
+    </foreach>
+  </insert>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
index fc3b608..cf61145 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
@@ -116,7 +116,7 @@
 
   <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒淇℃伅-->
   <select id="getTrampControllerInfo" resultMap="BaseResultMap">
-    SELECT rtuAddr, protocol, findDt FROM pr_controller_tramp WHERE id = #{controllerId}
+    SELECT rtuAddr, protocol, findDt, orgTag FROM pr_controller_tramp WHERE id = #{controllerId}
   </select>
 
     <!--    鏍规嵁鏉′欢鑾峰彇娴佹氮鎺у埗鍣ㄤ俊鎭�-->
@@ -138,7 +138,13 @@
                 AND  protocol = #{protocol,jdbcType=VARCHAR}
             </if>
         </where>
-    </select>
+        order by rtuAddr desc
+        <trim prefix="limit " >
+            <if test="start != null and count != null">
+                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
+            </if>
+        </trim>
+</select>
     <!--    鏍规嵁鏉′欢鑾峰彇娴佹氮鎺у埗鍣ㄦ暟閲�-->
     <select id="getTrampControllersCount" resultType="java.lang.Long">
         select
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
index cb816f9..f724ab8 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -447,6 +447,9 @@
             <if test="intakeNum != null and intakeNum != ''">
                 AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
             </if>
+            <if test="clientName != null and clientName != ''">
+                AND oh.client_name LIKE CONCAT('%', #{clientName}, '%')
+            </if>
             <if test="rtuAddr != null and rtuAddr != ''">
                 AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
             </if>
@@ -510,6 +513,9 @@
             </if>
             <if test="intakeNum != null and intakeNum != ''">
                 AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
+            </if>
+            <if test="clientName != null and clientName != ''">
+                AND oh.client_name LIKE CONCAT('%', #{clientName}, '%')
             </if>
             <if test="rtuAddr != null and rtuAddr != ''">
                 AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
@@ -1054,4 +1060,65 @@
             </if>
         </trim>
     </select>
+
+    <!--鑾峰彇姘村崱娑堣垂璁板綍鏁伴噺锛岀鐞嗗钩鍙颁娇鐢�-->
+    <select id="getExpendsCount" resultType="java.lang.Long">
+        SELECT COUNT(*) AS recordCount
+        FROM rm_open_close_valve_history och
+            INNER JOIN se_client cli ON cli.id = och.client_id
+            INNER JOIN pr_intake inta ON inta.id = och.intake_id
+        <where>
+            AND och.cl_ic_card_no IS NOT NULL AND och.client_id IS NOT NULL
+            AND och.cl_this_money> 0
+            <if test = "clientName != null and clientName !=''">
+                AND cli.name like CONCAT('%',#{clientName},'%')
+            </if>
+
+            <if test = "clientNum != null and clientNum > 0">
+                AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+            </if>
+
+            <if test = "cardNum != null and cardNum !=''">
+                AND och.cl_ic_card_no like CONCAT('%',#{cardNum},'%')
+            </if>
+        </where>
+    </select>
+
+    <!--鑾峰彇姘村崱娑堣垂璁板綍锛岀鐞嗗钩鍙颁娇鐢�-->
+    <select id="getExpends" resultType="com.dy.pipIrrGlobal.voRm.VoExpend">
+        SELECT
+            cli.name AS clientName,
+            cli.clientNum,
+            och.cl_ic_card_no AS cardNum,
+            inta.name AS intakeName,
+            och.rtu_addr AS rtuAddr,
+            och.cl_this_money AS moneyAmount,
+            och.cl_this_amount AS waterAmount,
+            och.cl_this_time AS duration,
+            och.cl_dt AS operateTime
+        FROM rm_open_close_valve_history och
+            INNER JOIN se_client cli ON cli.id = och.client_id
+            INNER JOIN pr_intake inta ON inta.id = och.intake_id
+        <where>
+            AND och.cl_ic_card_no IS NOT NULL AND och.client_id IS NOT NULL
+            AND och.cl_this_money> 0
+            <if test = "clientName != null and clientName !=''">
+                AND cli.name like CONCAT('%',#{clientName},'%')
+            </if>
+
+            <if test = "clientNum != null and clientNum > 0">
+                AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+            </if>
+
+            <if test = "cardNum != null and cardNum !=''">
+                AND och.cl_ic_card_no like CONCAT('%',#{cardNum},'%')
+            </if>
+        </where>
+        ORDER BY och.cl_dt 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/RmOpenCloseValveLastMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
index e929674..5bdd2d1 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
@@ -466,6 +466,9 @@
             <if test="intakeNum != null and intakeNum != ''">
                 AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
             </if>
+            <if test="clientName != null and clientName != ''">
+                AND oh.client_name LIKE CONCAT('%', #{clientName}, '%')
+            </if>
             <if test="rtuAddr != null and rtuAddr != ''">
                 AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
             </if>
@@ -530,6 +533,9 @@
             <if test="intakeNum != null and intakeNum != ''">
                 AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
             </if>
+            <if test="clientName != null and clientName != ''">
+                AND oh.client_name LIKE CONCAT('%', #{clientName}, '%')
+            </if>
             <if test="rtuAddr != null and rtuAddr != ''">
                 AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
             </if>
@@ -537,76 +543,6 @@
                 AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
             </if>
             <if test="timeStart_close != null and timeStart_close != '' and timeStop_close != null and timeStop_close != ''">
-                AND oh.cl_dt BETWEEN #{timeStart_close} AND #{timeStop_close}
-            </if>
-        </where>
-        ORDER BY oh.op_dt DESC
-        <trim prefix="limit ">
-            <if test="start != null and count != null">
-                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
-            </if>
-        </trim>
-    </select>
-    <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇寮�鍏抽榾鎶ユ渶鏂拌褰�-->
-    <select id="getOpenCloseValveReports_last" resultType="com.dy.pipIrrGlobal.voRm.VoOpenCloseValve">
-        SELECT oh.intake_id            AS intakeId,
-               inta.name               AS intakeNum,
-               oh.rtu_addr             AS rtuAddr,
-               oh.client_name          AS clientName,
-               oh.op_ic_card_no        AS openIcNum,
-               oh.op_ic_card_addr      AS openIcAddr,
-               oh.op_dt                AS openTime,
-
-               CASE
-                   WHEN oh.op_type = 1 THEN '鍒峰崱寮�闃�'
-                   WHEN oh.op_type = 3 THEN '涓績绔欏紑闃�'
-                   WHEN oh.op_type = 5 THEN '浣欓涓嶈冻鍏抽榾'
-                   WHEN oh.op_type = 8 THEN '鐢ㄦ埛杩滅▼寮�闃�'
-                   WHEN oh.op_type = 11 THEN '寮�鍏抽榾鍗″紑闃�'
-                   ELSE '鏈煡'
-                   END                 AS openType,
-               oh.op_order_no          AS openOrderNo,
-               oh.op_total_amount      AS openTotalAmount,
-               oh.op_remain_money      AS openRemainMoney,
-               oh.op_water_remain_user AS openWaterRemain,
-               oh.op_ele_total_amount  AS openEleTotalAmount,
-               oh.cl_ic_card_no        AS closeIcNum,
-               oh.cl_ic_card_addr      AS closeIcAddr,
-               oh.cl_dt                AS closeTime,
-               CASE
-                   WHEN oh.cl_type = 2 THEN '鍒峰崱鍏抽榾'
-                   WHEN oh.cl_type = 4 THEN '涓績绔欏叧闃�'
-                   WHEN oh.cl_type = 5 THEN '浣欓涓嶈冻鍏抽榾'
-                   WHEN oh.cl_type = 6 THEN '娴侀噺璁℃晠闅滃叧闃�'
-                   WHEN oh.cl_type = 7 THEN '绱ф�ュ叧闃�'
-                   WHEN oh.cl_type = 9 THEN '鐢ㄦ埛杩滅▼鍏抽榾'
-                   WHEN oh.cl_type = 10 THEN '寮�鍏抽榾鍗″叧闃�'
-                   WHEN oh.cl_type = 12 THEN '榛戝悕鍗曞懡浠ゅ叧闃�'
-                   WHEN oh.cl_type = 13 THEN '杩滅▼瀹氭椂鍏抽榾'
-                   WHEN oh.cl_type = 14 THEN '杩滅▼瀹氶噺鍏抽榾'
-                   ELSE '鏈煡'
-                   END                 AS closeType,
-               oh.cl_this_amount       AS closeThisAmount,
-               oh.cl_this_time         AS thisTime,
-               oh.cl_this_money        AS thisMoney,
-               oh.cl_remain_money      AS closeRemainMoney,
-               oh.cl_total_amount      AS closeTotalAmount
-        FROM rm_open_close_valve_last oh
-                 INNER JOIN pr_intake inta ON inta.id = oh.intake_id
-        <where>
-            <if test="intakeId != null and intakeId > 0">
-                AND oh.intake_id = #{intakeId}
-            </if>
-            <if test="intakeNum != null and intakeNum != ''">
-                AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
-            </if>
-            <if test="rtuAddr != null and rtuAddr != ''">
-                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
-            </if>
-            <if test="timeStart_open != null and timeStop_open != null">
-                AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
-            </if>
-            <if test="timeStart_close != null and timeStop_close != null">
                 AND oh.cl_dt BETWEEN #{timeStart_close} AND #{timeStop_close}
             </if>
         </where>
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 0d22785..f03c554 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -272,17 +272,15 @@
       cli.phone,
       cli.idCard,
       cli.clientNum,
+      dis.name AS villageName,
       cli.address,
       card.money,
       cardNum,
-<!--      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.gift, 0) AS gift,
       IFNULL(ope.refund_amount, 0) AS refundAmount,
-      (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0)) AS afterRecharge,
+      (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0) + IFNULL(ope.gift, 0)) AS afterRecharge,
       pay.name AS paymentName,
       ope.price,
       us.name AS opr,
@@ -295,6 +293,7 @@
     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
+    LEFT JOIN ba_district dis ON dis.id = cli.villageId
     INNER JOIN ba_user us ON ope.operator = us.id
     Left JOIN se_payment_method pay ON ope.payment_id = pay.id
     <where>
@@ -310,14 +309,6 @@
       <if test = "cardNum != null and cardNum !=''">
         AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </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>-->
     </where>
     ORDER BY ope.operate_dt DESC
     <trim prefix="limit " >
@@ -373,7 +364,8 @@
         IFNULL(ope.card_cost,0.00) AS cardCost,
         IFNULL(ope.gift,0.00) AS gift,
         IFNULL(ope.refund_amount,0.00) AS refundAmount,
-        ope.money,
+        <!--ope.money,-->
+        (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0) + IFNULL(ope.gift, 0)) AS money,
         pay.name AS paymentName,
         ope.operate_dt as tradeTime,
         us.id AS cashierId,
@@ -386,10 +378,10 @@
         cli.districtTitle,
         cli.villageId AS villageId
     FROM se_card_operate ope
-        INNER JOIN se_client cli ON ope.client_id = cli.id
-        INNER JOIN se_client_card card ON card.id = ope.card_id
+        LEFT JOIN se_client cli ON ope.client_id = cli.id
+        LEFT JOIN se_client_card card ON card.id = ope.card_id
         LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
-        INNER JOIN ba_user us ON ope.operator = us.id
+        LEFT JOIN ba_user us ON ope.operator = us.id
     <where>
       AND ope.operate_type IN(1,2,3,5)
 
@@ -443,23 +435,24 @@
   <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇寮�鍗¤褰�-->
   <select id="getActiveCards" resultType="com.dy.pipIrrGlobal.voSe.VoActiveCard">
     SELECT
-    CAST(ope.id AS char) AS id ,
-    cli.name AS clientName,
-    cli.clientNum AS clientNum,
-    card.cardNum AS cardNum,
-    card.state AS state,
-    (CASE
-    WHEN card.state = 1 THEN '姝e父'
-    WHEN card.state = 2 THEN '宸叉敞閿�'
-    WHEN card.state = 3 THEN '宸叉寕澶�'
-    END) AS stateName,
-    ope.card_cost AS cardCost,
-    ope.payment_id AS paymentId,
-    (SELECT `name` FROM ba_user WHERE id =  ope.operator) AS operator,
-    ope.operate_dt AS operateDt
+        ope.id,
+        cli.name AS clientName,
+        cli.clientNum AS clientNum,
+        card.cardNum AS cardNum,
+        card.state AS state,
+        (CASE
+            WHEN card.state = 1 THEN '姝e父'
+            WHEN card.state = 2 THEN '宸叉敞閿�'
+            WHEN card.state = 3 THEN '宸叉寕澶�'
+        END) AS stateName,
+        ope.card_cost AS cardCost,
+        pay.name AS paymentName,
+        (SELECT `name` FROM ba_user WHERE id =  ope.operator) AS operator,
+        ope.operate_dt AS operateDt
     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 se_client_card card ON ope.card_id = card.id
+        INNER JOIN se_client cli ON ope.client_id = cli.id
+        INNER JOIN se_payment_method pay ON pay.id = ope.payment_id
     <where>
       AND ope.operate_type = 1
       <if test = "clientName != null and clientName !=''">
@@ -636,6 +629,14 @@
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
+      <if test = "onlyGift != null and onlyGift ==true">
+        AND ope.gift > 0
+      </if>
+
+      <if test = "cashierId != null and cashierId > 0">
+        AND ope.operator = #{cashierId}
+      </if>
+
       <if test = "timeStart != null and timeStop != null">
         AND ope.operate_dt BETWEEN #{timeStart} AND #{timeStop}
       </if>
@@ -645,25 +646,27 @@
   <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鍒楄〃-->
   <select id="getReceipts" resultType="com.dy.pipIrrGlobal.voSe.VoReceipt">
     SELECT
-    CAST(ope.id AS char) AS orderNumber,
-    tow.name AS townName,
-    vil.name AS villageName,
-    cli.`name`,
-    cli.phone,
-    CAST(cli.clientNum AS char) AS clientNum,
-    CAST(card.cardNum AS char) AS cardNum,
-    (CASE
-    WHEN ope.operate_type = 1 THEN '寮�鍗�'
-    WHEN ope.operate_type = 2 THEN '鍏呭��'
-    END) AS operateType,
-    IFNULL(ope.trade_amount,0) AS waterCost,
-    IFNULL(ope.card_cost,0) AS cardCost,
-    (IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS amount,
-    card.money,
-    pay.`name` AS paymentName,
-    us.`name` AS operatorName,
-    ope.operate_dt AS operateTime,
-    NOW() AS currentTime
+        ope.id AS orderNumber,
+        tow.name AS townName,
+        vil.name AS villageName,
+        cli.`name`,
+        cli.phone,
+        cli.clientNum,
+        card.cardNum,
+        (CASE
+            WHEN ope.operate_type = 1 THEN '寮�鍗�'
+            WHEN ope.operate_type = 2 THEN '鍏呭��'
+        END) AS operateType,
+        IFNULL(ope.trade_amount,0) AS waterCost,
+        IFNULL(ope.gift,0) AS gift,
+        IFNULL(ope.card_cost,0) AS cardCost,
+        (IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS amount,
+        card.money,
+        pay.`name` AS paymentName,
+        us.`name` AS operatorName,
+        ope.operate_dt AS operateTime,
+        ope.operator AS cashierId,
+        NOW() AS currentTime
     FROM se_card_operate ope
     INNER JOIN se_client cli ON ope.client_id = cli.id
     INNER JOIN se_client_card card ON ope.card_id = card.id
@@ -679,6 +682,14 @@
 
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
+      </if>
+
+      <if test = "onlyGift != null and onlyGift ==true">
+        AND ope.gift > 0
+      </if>
+
+      <if test = "cashierId != null and cashierId > 0">
+        AND ope.operator = #{cashierId}
       </if>
 
       <if test = "timeStart != null and timeStop != null">
@@ -698,12 +709,12 @@
     SELECT
     SUM(IFNULL(ope.trade_amount,0) + IFNULL(ope.card_cost,0)) AS totalAmount
     FROM se_card_operate ope
-    INNER JOIN se_client cli ON ope.client_id = cli.id
-    INNER JOIN se_client_card card ON ope.card_id = card.id
-    INNER JOIN se_payment_method pay ON ope.payment_id = pay.id
-    INNER JOIN ba_user us ON ope.operator = us.id
-    INNER JOIN ba_district vil ON cli.villageId = vil.id
-    INNER JOIN ba_district tow ON cli.townId = tow.id
+    LEFT JOIN se_client cli ON ope.client_id = cli.id
+    LEFT JOIN se_client_card card ON ope.card_id = card.id
+    LEFT JOIN se_payment_method pay ON ope.payment_id = pay.id
+    LEFT JOIN ba_user us ON ope.operator = us.id
+    LEFT JOIN ba_district vil ON cli.villageId = vil.id
+    LEFT JOIN ba_district tow ON cli.townId = tow.id
     <where>
       AND ope.operate_type IN(1,2)
       <if test = "operateId != null and operateId > 0">
@@ -894,4 +905,124 @@
       </if>
     </trim>
   </select>
+
+  <!--鑾峰彇鍏呭�艰褰曟暟閲忥紝绠$悊骞冲彴鍏呭�煎垪琛ㄤ娇鐢紝APP鏈娇鐢�-->
+  <select id="getRechargesCountNew" resultType="java.lang.Long">
+    SELECT COUNT(*) AS recordCount
+    FROM se_client_card card
+        INNER JOIN se_client cli ON cli.id = card.clientId
+        LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
+        LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
+        INNER JOIN ba_user us ON us.id = rch.operator
+    <where>
+      <if test = "clientName != null and clientName !=''">
+        AND cli.name like CONCAT('%',#{clientName},'%')
+      </if>
+
+      <if test = "clientNum != null and clientNum > 0">
+        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+      </if>
+
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
+      </if>
+    </where>
+  </select>
+
+  <!--鑾峰彇鍏呭�艰褰曪紝绠$悊骞冲彴鍏呭�煎垪琛ㄤ娇鐢紝APP鏈娇鐢�-->
+  <select id="getRechargesNew" resultType="com.dy.pipIrrGlobal.voSe.VoRechargeNew">
+    SELECT
+        cli.name AS clientName,
+        cli.clientNum,
+        card.cardNum,
+        IFNULL(rch.amount, 0) AS amount,
+        IFNULL(rch.gift, 0) AS gift,
+        IFNULL(rch.afterRecharge, 0) AS afterRecharge,
+        pay.name AS paymentName,
+        us.name AS operator,
+        rch.operateDt AS operateTime
+    FROM se_client_card card
+        INNER JOIN se_client cli ON cli.id = card.clientId
+        LEFT JOIN se_recharge_history rch ON rch.cardId = card.id
+        LEFT JOIN se_payment_method pay ON pay.id = rch.paymentId
+        INNER JOIN ba_user us ON us.id = rch.operator
+    <where>
+      <if test = "clientName != null and clientName !=''">
+        AND cli.name like CONCAT('%',#{clientName},'%')
+      </if>
+
+      <if test = "clientNum != null and clientNum > 0">
+        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+      </if>
+
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
+      </if>
+    </where>
+    ORDER BY rch.operateDt DESC
+    <trim prefix="limit " >
+      <if test="start != null and count != null">
+        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
+      </if>
+    </trim>
+  </select>
+
+  <!--鑾峰彇杩旇繕璁板綍鏁伴噺锛岀鐞嗗钩鍙板厖鍊煎垪琛ㄤ娇鐢�-->
+  <select id="getRefundsCount" resultType="java.lang.Long">
+    SELECT COUNT(*) AS recordCount
+    FROM se_client_card card
+        INNER JOIN se_client cli ON cli.id = card.clientId
+        LEFT JOIN se_card_operate ope ON ope.card_id = card.id
+        INNER JOIN ba_user us ON us.id = ope.operator
+    <where>
+      AND ope.operate_type = 5
+      <if test = "clientName != null and clientName !=''">
+        AND cli.name like CONCAT('%',#{clientName},'%')
+      </if>
+
+      <if test = "clientNum != null and clientNum > 0">
+        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+      </if>
+
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
+      </if>
+    </where>
+  </select>
+
+  <!--鑾峰彇杩旇繕璁板綍锛岀鐞嗗钩鍙板厖鍊煎垪琛ㄤ娇鐢�-->
+  <select id="getRefunds" resultType="com.dy.pipIrrGlobal.voSe.VoRefund">
+    SELECT
+        cli.name AS clientName,
+        cli.clientNum,
+        card.cardNum,
+        IFNULL(ope.money, 0) AS money,
+        IFNULL(ope.refund_amount, 0) AS refundAmount,
+        us.name AS operator,
+        ope.operate_dt AS operateTime
+    FROM se_client_card card
+        INNER JOIN se_client cli ON cli.id = card.clientId
+        LEFT JOIN se_card_operate ope ON ope.card_id = card.id
+        INNER JOIN ba_user us ON us.id = ope.operator
+    <where>
+      AND ope.operate_type = 5
+      <if test = "clientName != null and clientName !=''">
+        AND cli.name like CONCAT('%',#{clientName},'%')
+      </if>
+
+      <if test = "clientNum != null and clientNum > 0">
+        AND cli.clientNum like CONCAT('%',#{clientNum},'%')
+      </if>
+
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
+      </if>
+    </where>
+    ORDER BY ope.operate_dt 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/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index 5f2f303..8935aee 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -650,4 +650,76 @@
         WHERE cardAddr = #{cardAddr}
           AND state IN (1, 3)
     </select>
+
+    <!--鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐佃褰曟暟閲�-->
+    <select id="getCardUsagesCount" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage">
+        SELECT
+            cli.name AS clientName,
+            card.cardNum,
+            (SELECT ROUND(SUM(rch.amount),2) FROM se_recharge_history rch WHERE rch.cardId = card.id AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}) AS totalRecharge,
+            (SELECT ROUND(SUM(his.cl_this_money),2) FROM rm_open_close_valve_history his WHERE his.cl_ic_card_no = card.cardNum AND his.cl_dt BETWEEN #{timeStart} AND #{timeStop}) AS totalConsumption,
+            ROUND(card.money,2) AS balance
+        FROM se_client_card card
+            INNER JOIN se_client cli ON cli.id = card.clientId
+            INNER JOIN se_recharge_history rch ON rch.cardId = card.id
+        <where>
+            <if test="clientName != null and clientName != ''">
+                AND cli.name like CONCAT('%', #{clientName}, '%')
+            </if>
+
+            <if test="cardNum != null and cardNum != ''">
+                AND card.cardNum like CONCAT('%', #{cardNum}, '%')
+            </if>
+
+            <if test="clientNum != null and clientNum != ''">
+                AND cli.clientNum like CONCAT('%', #{clientNum}, '%')
+            </if>
+        </where>
+    </select>
+
+    <!--鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐碉細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�-->
+    <select id="getCardUsages" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage">
+        SELECT
+            cli.name AS clientName,
+            card.cardNum,
+            (SELECT ROUND(SUM(rch.amount),2) FROM se_recharge_history rch WHERE rch.cardId = card.id AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}) AS totalRecharge,
+            (SELECT ROUND(SUM(his.cl_this_money),2) FROM rm_open_close_valve_history his WHERE his.cl_ic_card_no = card.cardNum AND his.cl_dt BETWEEN #{timeStart} AND #{timeStop}) AS totalConsumption,
+            ROUND(card.money,2) AS balance
+        FROM se_client_card card
+            INNER JOIN se_client cli ON cli.id = card.clientId
+            INNER JOIN se_recharge_history rch ON rch.cardId = card.id
+        <where>
+            <if test="clientName != null and clientName != ''">
+                AND cli.name like CONCAT('%', #{clientName}, '%')
+            </if>
+
+            <if test="cardNum != null and cardNum != ''">
+                AND card.cardNum like CONCAT('%', #{cardNum}, '%')
+            </if>
+
+            <if test="clientNum != null and clientNum != ''">
+                AND cli.clientNum like CONCAT('%', #{clientNum}, '%')
+            </if>
+        </where>
+        ORDER BY cli.name, card.cardNum
+        <trim prefix="limit ">
+            <if test="start != null and count != null">
+                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
+
+    <!--鑾峰彇鎸囧畾鏃堕棿娈靛唴姘村崱鍏呭�兼�昏-->
+    <select id="getTotalRecharge" resultType="java.lang.Float">
+        SELECT ROUND(SUM(amount),2) AS totalRecharge
+        FROM se_recharge_history
+        WHERE operateDt BETWEEN #{timeStart} AND #{timeStop}
+    </select>
+
+    <!--鑾峰彇鎸囧畾鏃堕棿娈靛唴姘村崱娑堣垂鎬昏-->
+    <select id="getTotalConsumption" resultType="java.lang.Float">
+        SELECT ROUND(SUM(cl_this_money),2) AS totalConsumption
+        FROM rm_open_close_valve_history
+        WHERE cl_dt BETWEEN #{timeStart} AND #{timeStop}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
index 30c4b20..65bb9e1 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
@@ -325,6 +325,16 @@
       <if test = "address != null and address !=''">
         AND cli.address like CONCAT('%',#{address},'%')
       </if>
+
+      <if test = "villageId != null and villageId !=''">
+        AND cli.villageId =  #{villageId}
+      </if>
+      <if test = "blockId != null and blockId !=''">
+        AND cli.blockId =  #{blockId}
+      </if>
+      <if test = "divideId != null and divideId !=''">
+        AND cli.divideId =  #{divideId}
+      </if>
     </where>
 
   </select>
@@ -384,6 +394,12 @@
       <if test = "villageId != null and villageId !=''">
         AND cli.villageId =  #{villageId}
       </if>
+      <if test = "blockId != null and blockId !=''">
+        AND cli.blockId =  #{blockId}
+      </if>
+      <if test = "divideId != null and divideId !=''">
+        AND cli.divideId =  #{divideId}
+      </if>
     </where>
     ORDER BY cli.operateDt DESC
     <trim prefix="limit " >
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientTempMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientTempMapper.xml
new file mode 100644
index 0000000..29cacef
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientTempMapper.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoSe.SeClientTempMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeClientTemp">
+    <!--@mbg.generated-->
+    <!--@Table se_client_temp-->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="town" jdbcType="VARCHAR" property="town" />
+    <result column="village" jdbcType="VARCHAR" property="village" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="idCard" jdbcType="VARCHAR" property="idcard" />
+    <result column="phone" jdbcType="VARCHAR" property="phone" />
+    <result column="address" jdbcType="VARCHAR" property="address" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, town, village, `name`, idCard, phone, address
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from se_client_temp
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+    <!--@mbg.generated-->
+    delete from se_client_temp
+    where id = #{id,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientTemp" useGeneratedKeys="true">
+    <!--@mbg.generated-->
+    insert into se_client_temp (town, village, `name`, 
+      idCard, phone, address
+      )
+    values (#{town,jdbcType=VARCHAR}, #{village,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, 
+      #{idcard,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}
+      )
+  </insert>
+  <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientTemp" useGeneratedKeys="true">
+    <!--@mbg.generated-->
+    insert into se_client_temp
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="town != null">
+        town,
+      </if>
+      <if test="village != null">
+        village,
+      </if>
+      <if test="name != null">
+        `name`,
+      </if>
+      <if test="idcard != null">
+        idCard,
+      </if>
+      <if test="phone != null">
+        phone,
+      </if>
+      <if test="address != null">
+        address,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="town != null">
+        #{town,jdbcType=VARCHAR},
+      </if>
+      <if test="village != null">
+        #{village,jdbcType=VARCHAR},
+      </if>
+      <if test="name != null">
+        #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="idcard != null">
+        #{idcard,jdbcType=VARCHAR},
+      </if>
+      <if test="phone != null">
+        #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="address != null">
+        #{address,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientTemp">
+    <!--@mbg.generated-->
+    update se_client_temp
+    <set>
+      <if test="town != null">
+        town = #{town,jdbcType=VARCHAR},
+      </if>
+      <if test="village != null">
+        village = #{village,jdbcType=VARCHAR},
+      </if>
+      <if test="name != null">
+        `name` = #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="idcard != null">
+        idCard = #{idcard,jdbcType=VARCHAR},
+      </if>
+      <if test="phone != null">
+        phone = #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="address != null">
+        address = #{address,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientTemp">
+    <!--@mbg.generated-->
+    update se_client_temp
+    set town = #{town,jdbcType=VARCHAR},
+      village = #{village,jdbcType=VARCHAR},
+      `name` = #{name,jdbcType=VARCHAR},
+      idCard = #{idcard,jdbcType=VARCHAR},
+      phone = #{phone,jdbcType=VARCHAR},
+      address = #{address,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+
+  <!--鏍规嵁闀囧悕鑾峰彇鍐滄埛-->
+  <select id="getClientsByTownName" resultType="com.dy.pipIrrGlobal.pojoSe.SeClientTemp">
+    SELECT * FROM se_client_temp WHERE town = #{townName}
+  </select>
+</mapper>
\ No newline at end of file
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 c5c9dd8..aac929f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml
@@ -140,7 +140,9 @@
     SELECT
       DISTINCT Date(ope.operate_dt) AS operateDate
     FROM se_card_operate ope
-    WHERE Date(ope.operate_dt) NOT IN(SELECT operate_date FROM se_general) AND Date(ope.operate_dt) != CURDATE()
+    WHERE Date(ope.operate_dt) NOT IN(SELECT operate_date FROM se_general)
+<!--      鍙栨秷褰撳ぉ闄愬埗-->
+<!--      AND Date(ope.operate_dt) != CURDATE()-->
   </select>
 
   <!--鏍规嵁浜ゆ槗鏃ユ湡鑾峰彇鎬昏处璁板綍鍒楄〃锛堝緟鐢熸垚鐨勶級  -->
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
index 4c6687c..c8e5bc5 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/dbSv/DbSv.java
@@ -10,7 +10,6 @@
 import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
 import com.dy.pipIrrGlobal.pojoRm.*;
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
-import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
 import com.dy.pipIrrGlobal.voSe.VoCardInfo1;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -153,6 +152,9 @@
      */
     @Transactional(rollbackFor = Exception.class)
     public void savePrConctrollerTramp(PrControllerTramp po){
+        if(po.getOrgTag().trim().length() > 2) {
+            po.setOrgTag("DY");
+        }
         this.prControllerTrampMapperDao.insert(po) ;
     }
    /**
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java
index 4f53df5..9ad6865 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java
@@ -1,8 +1,8 @@
 package com.dy.rtuMw.server.rtuData.p206V1_0_0;
 
+import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
 import com.dy.rtuMw.server.rtuData.TaskSurpport;
 import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
-import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml
index 1b486e8..94c49fc 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml
@@ -3,10 +3,8 @@
     datasource: #閰嶇疆鏁版嵁婧�
         type: com.alibaba.druid.pool.DruidDataSource
         driver-class-name: com.mysql.cj.jdbc.Driver
-#        url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
-#        url: jdbc:mysql://8.130.130.233:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
-        #url: jdbc:mysql://8.140.179.55:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
         url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
+#        url: jdbc:mysql://8.130.130.233:3306/pipIrr_test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
         username: root
         password: dysql,;.abc!@#
         druid:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/PipIrrAppApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/PipIrrAppApplication.java
index 9d551cb..3ed996b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/PipIrrAppApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/PipIrrAppApplication.java
@@ -18,7 +18,7 @@
                 })
         }
 )
-@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoRm", "com.dy.pipIrrGlobal.daoPr", "com.dy.pipIrrGlobal.daoSe", "com.dy.pipIrrGlobal.daoBa"})
+@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoOp", "com.dy.pipIrrGlobal.daoBa"})
 public class PipIrrAppApplication {
 
     public static void main(String[] args) {
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaCtrl.java
index 1015dd7..a2449e2 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/captcha/CaptchaCtrl.java
@@ -1,6 +1,8 @@
 package com.dy.pipIrrApp.captcha;
 
 import com.dy.common.multiDataSource.DataSourceContext;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrApp.captcha.dto.CaptchaDomain;
 import com.dy.pipIrrGlobal.pojoBa.BaCaptcha;
 import jakarta.servlet.ServletOutputStream;
@@ -35,7 +37,7 @@
      */
     @GetMapping("/get")
     @ResponseBody
-    public CaptchaDomain getCaptcha(HttpServletRequest request, @RequestParam(value = "type", required = false, defaultValue = "char") String type) {
+    public BaseResponse<CaptchaDomain> getCaptcha(HttpServletRequest request, @RequestParam(value = "type", required = false, defaultValue = "char") String type) {
         // 閰嶇疆鏁版嵁婧�
         HttpServletRequest httpRequest = (HttpServletRequest) request;
         String wxDataSourceName = httpRequest.getHeader("tag");
@@ -78,7 +80,7 @@
             captchaDomain.setText(null);
             captchaDomain.setCode(null);
             // 杩斿洖鍓嶇淇℃伅
-            return captchaDomain;
+            return BaseResponseUtils.buildSuccess(captchaDomain);
         } else {
             return null;
         }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/InspectCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/InspectCtrl.java
new file mode 100644
index 0000000..26e4ca5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/InspectCtrl.java
@@ -0,0 +1,108 @@
+package com.dy.pipIrrApp.inspect;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.util.IDLongGenerator;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrApp.inspect.dto.Inspects;
+import com.dy.pipIrrGlobal.pojoOp.OpeInspect;
+import com.dy.pipIrrGlobal.pojoOp.OpeTrack;
+import jakarta.validation.Valid;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 10:21
+ * @LastEditTime 2024-09-24 10:21
+ * @Description
+ */
+
+@Slf4j
+@RestController
+@RequestMapping(path="inspect")
+public class InspectCtrl {
+    @Autowired
+    private InspectSv inspectSv;
+
+    private final IDLongGenerator idLongGenerator;
+
+    public InspectCtrl(IDLongGenerator idLongGenerator) {
+        this.idLongGenerator = idLongGenerator;
+    }
+
+    /**
+     * 娣诲姞宸℃杞ㄨ抗
+     * @param list_Inspects 宸℃瀵硅薄鏁扮粍
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "save", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> save(@RequestBody @Valid List<Inspects> list_Inspects, BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        if(list_Inspects != null && list_Inspects.size() > 0) {
+            for (int i = 0; i < list_Inspects.size(); i++) {
+                Inspects inspects = list_Inspects.get(i);
+
+                Long inspectorId = inspects.getInspectorId();
+                Long inspectId = inspects.getInspectId();
+                Date startTime = inspects.getStartTime();
+                Date stopTime = inspects.getStopTime();
+                List<OpeTrack> tracks = inspects.getTracks();
+
+                if(tracks == null || tracks.size() == 0) {
+                    return BaseResponseUtils.buildErrorMsg("鏃犲贰妫�杞ㄨ抗");
+                }
+
+                if(inspectId == null || inspectId.equals(0)) {
+                    // 璇ュ贰妫�鏈笂浼犺繃璁板綍
+
+                    // 娣诲姞宸℃璁板綍
+                    OpeInspect opeInspect = new OpeInspect();
+                    opeInspect.setInspectorId(inspects.getInspectorId());
+                    if(startTime != null) {
+                        opeInspect.setStartTime(startTime);
+                    }
+                    if(stopTime != null) {
+                        opeInspect.setStopTime(stopTime);
+                    }
+                    inspectId = inspectSv.addInspect(opeInspect);
+                    if(inspectId == null) {
+                        return BaseResponseUtils.buildErrorMsg("宸℃璁板綍娣诲姞澶辫触");
+                    }
+
+                    for (int j = 0; j < tracks.size(); j++) {
+                        tracks.get(j).setId(idLongGenerator.generate());
+                        tracks.get(j).setInspectId(inspectId);
+                    }
+                    Integer rec = inspectSv.insertTracks(tracks);
+                    if(rec == null || rec == 0) {
+                        return BaseResponseUtils.buildErrorMsg("宸℃杞ㄨ抗娣诲姞澶辫触");
+                    }
+                }else {
+                    // 璇ュ贰妫�宸蹭笂浼犺繃璁板綍锛岀画浼�
+
+                }
+            }
+            return BaseResponseUtils.buildSuccess() ;
+        }
+        return BaseResponseUtils.buildErrorMsg("鎮ㄦ彁浜ょ殑宸℃杞ㄨ抗涓虹┖");
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/InspectSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/InspectSv.java
new file mode 100644
index 0000000..20893a0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/InspectSv.java
@@ -0,0 +1,49 @@
+package com.dy.pipIrrApp.inspect;
+
+import com.dy.pipIrrGlobal.daoOp.OpeInspectMapper;
+import com.dy.pipIrrGlobal.daoOp.OpeTrackMapper;
+import com.dy.pipIrrGlobal.pojoOp.OpeInspect;
+import com.dy.pipIrrGlobal.pojoOp.OpeTrack;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 10:21
+ * @LastEditTime 2024-09-24 10:21
+ * @Description
+ */
+
+@Slf4j
+@Service
+public class InspectSv {
+    @Autowired
+    private OpeInspectMapper opeInspectMapper;
+
+    @Autowired
+    private OpeTrackMapper opeTrackMapper;
+
+    /**
+     * 娣诲姞宸℃璁板綍
+     * @param po
+     * @return
+     */
+    public Long addInspect(OpeInspect po) {
+        opeInspectMapper.insert(po);
+        return po.getId();
+    }
+
+    /**
+     * 鎵归噺娣诲姞宸℃杞ㄨ抗
+     * @param list
+     * @return
+     */
+    public Integer insertTracks(List<OpeTrack> list) {
+        return opeTrackMapper.insertTracks(list);
+    }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/Inspects.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/Inspects.java
new file mode 100644
index 0000000..4fbcb6c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/Inspects.java
@@ -0,0 +1,48 @@
+package com.dy.pipIrrApp.inspect.dto;
+
+import com.dy.pipIrrGlobal.pojoOp.OpeTrack;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 15:17
+ * @LastEditTime 2024-09-24 15:17
+ * @Description 宸℃瀵硅薄
+ */
+
+@Data
+public class Inspects {
+    public static final long serialVersionUID = 202409241517001L;
+
+    /**
+     * 宸℃鍛業D
+     */
+    @NotNull(message = "宸℃鍛樹笉鑳戒负绌�")
+    private Long inspectorId;
+
+    /**
+     * 宸℃ID锛岃娆″贰妫�宸叉彁浜よ繃璁板綍鏃舵湁鍊硷紝涓昏鐢ㄤ簬鍚庣画鎵撶偣銆�
+     */
+    private Long inspectId;
+
+    /**
+     * 寮�濮嬪贰妫�鏃堕棿
+     */
+    private Date startTime;
+
+    /**
+     * 缁撴潫宸℃鏃堕棿
+     */
+    private Date stopTime;
+
+    /**
+     * 宸℃杞ㄨ抗
+     */
+    @NotEmpty(message = "宸℃杞ㄨ抗涓嶈兘涓虹┖")
+    private List<OpeTrack> tracks;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/StartPoint.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/StartPoint.java
new file mode 100644
index 0000000..ed2c013
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/StartPoint.java
@@ -0,0 +1,33 @@
+package com.dy.pipIrrApp.inspect.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 10:32
+ * @LastEditTime 2024-09-24 10:32
+ * @Description 寮�濮嬪贰妫�鎵撶偣瀵硅薄
+ */
+
+@Data
+public class StartPoint {
+    public static final long serialVersionUID = 202409241034001L;
+
+    /**
+     * 宸℃鍛業D
+     */
+    private Long inspectorId;
+
+    /**
+     * 寮�濮嬪贰妫�鏃堕棿
+     */
+    private Date startTime;
+
+    /**
+     * 鎵撳崱鐐�
+     */
+    private TrackPoint trackPoint;
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/StopPoint.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/StopPoint.java
new file mode 100644
index 0000000..363565b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/StopPoint.java
@@ -0,0 +1,32 @@
+package com.dy.pipIrrApp.inspect.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 10:49
+ * @LastEditTime 2024-09-24 10:49
+ * @Description 缁撴潫宸℃鎵撶偣瀵硅薄
+ */
+
+@Data
+public class StopPoint {
+    public static final long serialVersionUID = 202409241053001L;
+
+    /**
+     * 宸℃ID
+     */
+    private Long inspectId;
+
+    /**
+     * 缁撴潫宸℃鏃堕棿
+     */
+    private Date stopTime;
+
+    /**
+     * 鎵撳崱鐐�
+     */
+    private TrackPoint trackPoint;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/TrackPoint.java b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/TrackPoint.java
new file mode 100644
index 0000000..9e859e9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/inspect/dto/TrackPoint.java
@@ -0,0 +1,33 @@
+package com.dy.pipIrrApp.inspect.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-24 10:44
+ * @LastEditTime 2024-09-24 10:44
+ * @Description 鎵撶偣瀵硅薄
+ */
+
+@Data
+public class TrackPoint {
+    public static final long serialVersionUID = 202409241045001L;
+
+    /**
+     * 鎵撶偣绮惧害
+     */
+    private BigDecimal lng;
+
+    /**
+     * 鎵撶偣绾害
+     */
+    private BigDecimal lat;
+
+    /**
+     * 鎵撶偣鏃堕棿
+     */
+    private Date locateTime;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml
index f3f6e15..315b008 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
     profiles:
-        include: global, database, database-ym, database-pj
+        include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:
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 dba3c5e..e8b00e6 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
@@ -12,6 +12,7 @@
 import com.dy.pipIrrBase.result.SystemResultCode;
 import com.dy.pipIrrGlobal.pojoBa.BaUser;
 import com.dy.pipIrrGlobal.util.Constant;
+import com.dy.pipIrrGlobal.voBa.VoSimpleUser;
 import com.dy.pipIrrGlobal.voBa.VoUserInfo;
 import com.mysql.cj.util.StringUtils;
 import io.swagger.v3.oas.annotations.Operation;
@@ -514,4 +515,19 @@
             return BaseResponseUtils.buildException(e.getMessage());
         }
     }
+
+    /**
+     * 鑾峰彇绠�鍗曠敤鎴锋暟鎹垪琛紝鏁版嵁鍒楄〃鏌ヨ鏉′欢涓娇鐢�
+     * @return
+     */
+    @GetMapping(path = "simple_users")
+    @SsoAop()
+    public BaseResponse<List<VoSimpleUser>> getSimpleUsers(){
+        try {
+            return BaseResponseUtils.buildSuccess(sv.getSimpleUsers());
+        } catch (Exception e) {
+            log.error("鏌ヨ绠�鍗曠敤鎴蜂俊鎭紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
 }
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 c11a566..e47e787 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
@@ -11,6 +11,7 @@
 import com.dy.pipIrrGlobal.pojoBa.BaRolePermissions;
 import com.dy.pipIrrGlobal.pojoBa.BaUser;
 import com.dy.pipIrrGlobal.pojoBa.BaUserRole;
+import com.dy.pipIrrGlobal.voBa.VoSimpleUser;
 import com.dy.pipIrrGlobal.voBa.VoUserInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
@@ -257,8 +258,15 @@
         voUserInfo.setRoleIds(list_roleIds);
         voUserInfo.setRoleNames(list_roleNames);
         voUserInfo.setPermissions(array_permission);
-
-
         return voUserInfo;
     }
+
+    /**
+     * 鑾峰彇绠�鍗曠敤鎴锋暟鎹垪琛紝鏁版嵁鍒楄〃鏌ヨ鏉′欢涓娇鐢�
+     * @return
+     */
+    public List<VoSimpleUser> getSimpleUsers() {
+        return dao.getSimpleUsers();
+    }
+
 }
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 7369e38..addc58c 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
@@ -1,9 +1,10 @@
 spring:
     profiles:
-        include: global, database, database-ym, database-pj
+        include: global, database, database-ym, database-pj, database-test
 user:
     defaultTrueRandomFalsePassword: true #true:閲囩敤榛樿瀵嗙爜锛宖alse:绯荤粺浜х敓闅忔満瀵嗙爜
     defaultPassword: "abc_123"
+#    defaultPassword: "admin"
 
 #actutor鐨剋eb绔彛
 management:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml
index b81536f..54c9d83 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
     profiles:
-        include: global, database, database-ym, database-pj
+        include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/resources/application.yml
index fb79576..719aa5a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    include: global, database, database-ym, database-pj
+    include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-operation/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-operation/src/main/resources/application.yml
index eb766c7..2eec135 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-operation/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-operation/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
     profiles:
-        include: global, database, database-ym, database-pj
+        include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
index 8bc4a6b..7fbc6bf 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
@@ -1,7 +1,6 @@
 package com.dy.pipIrrProject.intakeController;
 
 
-import cn.hutool.core.date.DateTime;
 import com.dy.common.aop.SsoAop;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
@@ -284,16 +283,15 @@
     @GetMapping(path = "/getTrampControllers")
     @SsoAop()
     public BaseResponse<QueryResultVo<List<PrControllerTramp>>> getTrampControllers(TrampControllerQueryVo vo) {
-
         try {
-            QueryResultVo<List<PrControllerTramp>> res = intakeControllerSv.getTrampControllers(vo);
-            if (res.itemTotal != null && res.itemTotal > 0) {
-                return BaseResponseUtils.buildSuccess(res);
-            } else {
-                //璇锋眰鎴愬姛浣嗘暟鎹负绌�
-                return BaseResponseUtils.buildSuccess(res);
-            }
-            //return BaseResponseUtils.buildSuccess(res);
+            //QueryResultVo<List<PrControllerTramp>> res = intakeControllerSv.getTrampControllers(vo);
+            //if (res.itemTotal != null && res.itemTotal > 0) {
+            //    return BaseResponseUtils.buildSuccess(res);
+            //} else {
+            //    //璇锋眰鎴愬姛浣嗘暟鎹负绌�
+            //    return BaseResponseUtils.buildSuccess(res);
+            //}
+            return BaseResponseUtils.buildSuccess(intakeControllerSv.getTrampControllers(vo));
         } catch (Exception e) {
             log.error("鑾峰彇娴佹氮鎺у埗鍣ㄨ褰曞紓甯�", e);
             return BaseResponseUtils.buildException(e.getMessage());
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml
index 5dea5be..a1e4627 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    include: global, database, database-ym, database-pj
+    include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
index c38df7c..83b463b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/ReportSv.java
@@ -114,9 +114,9 @@
         if(timeStart_open != null && timeStart_open != "") {
             timeStart_open = timeStart_open + " 00:00:00";
         } else {
-            timeStart_open = LocalDate.now() + " 00:00:00";
+            timeStart_open = LocalDateTime.now().minusDays(30) + " 00:00:00";
         }
-        qo.setTimeStop_open(timeStart_open);
+        qo.setTimeStart_open(timeStart_open);
 
         if(timeStop_open != null && timeStop_open != "") {
             timeStop_open = timeStop_open + " 23:59:59";
@@ -130,7 +130,7 @@
         if(timeStart_close != null && timeStart_close != "") {
             timeStart_close = timeStart_close + " 00:00:00";
         } else {
-            timeStart_close = LocalDate.now() + " 00:00:00";
+            timeStart_close = LocalDate.now().minusDays(30) + " 00:00:00";
         }
         qo.setTimeStart_close(timeStart_close);
 
@@ -163,7 +163,7 @@
         String timeStop_open = qo.getTimeStop_open();
         if(timeStart_open != null) {
             timeStart_open = timeStart_open + " 00:00:00";
-            qo.setTimeStop_open(timeStart_open);
+            qo.setTimeStart_open(timeStart_open);
         }
         if(timeStop_open != null) {
             timeStop_open = timeStop_open + " 23:59:59";
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/OpenCloseValveQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/OpenCloseValveQO.java
index c6f4cc4..f9c2ad9 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/OpenCloseValveQO.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/report/qo/OpenCloseValveQO.java
@@ -28,6 +28,11 @@
     private String intakeNum;
 
     /**
+     * 鍐滄埛濮撳悕
+     */
+    private String clientName;
+
+    /**
      * 闃�鎺у櫒鍦板潃
      */
     private String rtuAddr;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java
index e4b0ec0..55b2348 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtu/RtuCtrl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
+import com.dy.common.multiDataSource.DataSourceContext;
 import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
 import com.dy.common.mw.protocol.p206V1_0_0.downVos.*;
 import com.dy.common.mw.protocol.p206V202404.CodeV202404;
@@ -98,7 +99,8 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
+        //String orgTag = job_rtu.getString("orgTag");
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鑾峰彇鍔熻兘鐮�
@@ -178,7 +180,8 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
+        //String orgTag = job_rtu.getString("orgTag");
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鑾峰彇鍔熻兘鐮�
@@ -238,7 +241,8 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
+        //String orgTag = job_rtu.getString("orgTag");
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鑾峰彇鍔熻兘鐮�
@@ -299,7 +303,8 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
+        //String orgTag = job_rtu.getString("orgTag");
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鑾峰彇鍔熻兘鐮�
@@ -359,7 +364,8 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
+        //String orgTag = job_rtu.getString("orgTag");
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鑾峰彇鍔熻兘鐮�
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 648354f..1247977 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
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.aop.SsoAop;
+import com.dy.common.multiDataSource.DataSourceContext;
 import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
 import com.dy.common.mw.protocol.p206V1_0_0.downVos.*;
 import com.dy.common.mw.protocol.p206V202404.CodeV202404;
@@ -110,10 +111,11 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
@@ -241,10 +243,11 @@
         }
         //Long intakeId = job_rtu.getLong("intakeId");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         String commandCode = null;
@@ -359,10 +362,11 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
@@ -479,11 +483,11 @@
             return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage());
         }
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
-
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         String commandCode = null;
@@ -601,10 +605,11 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
@@ -704,10 +709,11 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
@@ -814,10 +820,11 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
@@ -929,10 +936,11 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        String orgTag = DataSourceContext.get();
         comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
index ab59316..5cd4f0b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
     profiles:
-        include: global, database, database-ym, database-pj
+        include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java
index 7c4e317..3553183 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java
@@ -27,7 +27,7 @@
                 })
         }
 )
-@MapperScan({"com.dy.pipIrrGlobal.daoSe", "com.dy.pipIrrGlobal.daoBa", "com.dy.pipIrrGlobal.daoPr"})
+@MapperScan({"com.dy.pipIrrGlobal.daoSe", "com.dy.pipIrrGlobal.daoBa", "com.dy.pipIrrGlobal.daoPr", "com.dy.pipIrrGlobal.daoRm"})
 public class PipIrrSellApplication {
 
     public static void main(String[] args) {
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 c3638e5..0556ce3 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
@@ -11,10 +11,8 @@
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
 import com.dy.pipIrrGlobal.pojoSe.SeManagerCard;
 import com.dy.pipIrrGlobal.util.AmountToChinese;
-import com.dy.pipIrrGlobal.voSe.VoActiveCard;
-import com.dy.pipIrrGlobal.voSe.VoOperate;
-import com.dy.pipIrrGlobal.voSe.VoRecharge;
-import com.dy.pipIrrGlobal.voSe.VoReissueCard;
+import com.dy.pipIrrGlobal.voRm.VoExpend;
+import com.dy.pipIrrGlobal.voSe.*;
 import com.dy.pipIrrSell.cardOperate.dto.*;
 import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
 import com.dy.pipIrrSell.cardOperate.qo.*;
@@ -855,6 +853,57 @@
     }
 
     /**
+     * 鑾峰彇鍏呭�艰褰曪紝绠$悊骞冲彴鍏呭�煎垪琛ㄤ娇鐢紝APP鏈娇鐢�
+     * @param vo
+     * @return
+     */
+    @GetMapping(path = "/getRechargesNew")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoRechargeNew>>> getRechargesNew(QoRecharge vo){
+        try {
+            QueryResultVo<List<VoRechargeNew>> res = cardOperateSv.getRechargesNew(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇鍏呭�艰褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鑾峰彇杩旇繕璁板綍锛岀鐞嗗钩鍙板厖鍊煎垪琛ㄤ娇鐢�
+     * @param vo
+     * @return
+     */
+    @GetMapping(path = "/refunds")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoRefund>>> getRefunds(QoRecharge vo){
+        try {
+            QueryResultVo<List<VoRefund>> res = cardOperateSv.getRefunds(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇杩旇繕璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鑾峰彇姘村崱娑堣垂璁板綍锛岀鐞嗗钩鍙颁娇鐢�
+     * @param vo
+     * @return
+     */
+    @GetMapping(path = "/expends")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoExpend>>> getExpends(QoRecharge vo){
+        try {
+            QueryResultVo<List<VoExpend>> res = cardOperateSv.getExpends(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇娑堣垂璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗鏄庣粏
      * @param vo
      * @return
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 86bd4d3..283c37e 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
@@ -7,8 +7,10 @@
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoBa.BaSettingsMapper;
+import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
 import com.dy.pipIrrGlobal.daoSe.*;
 import com.dy.pipIrrGlobal.pojoSe.*;
+import com.dy.pipIrrGlobal.voRm.VoExpend;
 import com.dy.pipIrrGlobal.voSe.*;
 import com.dy.pipIrrSell.cardOperate.dto.DtoRecharge;
 import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
@@ -61,6 +63,9 @@
 
     @Autowired
     private SeRechargeHistoryMapper seRechargeHistoryMapper;
+
+    @Autowired
+    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
 
     @Value("${project.projectNo}")
     private Integer projectNo;
@@ -306,6 +311,63 @@
     }
 
     /**
+     * 鑾峰彇鍏呭�艰褰曪紝绠$悊骞冲彴鍏呭�煎垪琛ㄤ娇鐢紝APP鏈娇鐢�
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoRechargeNew>> getRechargesNew(QoRecharge queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = seCardOperateMapper.getRechargesCountNew(params);
+
+        QueryResultVo<List<VoRechargeNew>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = queryVo.pageSize ;
+        rsVo.pageCurr = queryVo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = seCardOperateMapper.getRechargesNew(params);
+        return rsVo ;
+    }
+
+    /**
+     * 鑾峰彇杩旇繕璁板綍锛岀鐞嗗钩鍙板厖鍊煎垪琛ㄤ娇鐢�
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoRefund>> getRefunds(QoRecharge queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = seCardOperateMapper.getRefundsCount(params);
+
+        QueryResultVo<List<VoRefund>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = queryVo.pageSize ;
+        rsVo.pageCurr = queryVo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = seCardOperateMapper.getRefunds(params);
+        return rsVo ;
+    }
+
+    /**
+     * 鑾峰彇姘村崱娑堣垂璁板綍锛岀鐞嗗钩鍙颁娇鐢�
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoExpend>> getExpends(QoRecharge queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = rmOpenCloseValveHistoryMapper.getExpendsCount(params);
+
+        QueryResultVo<List<VoExpend>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = queryVo.pageSize ;
+        rsVo.pageCurr = queryVo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = rmOpenCloseValveHistoryMapper.getExpends(params);
+        return rsVo ;
+    }
+
+    /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍
      * @param vo
      * @return
@@ -477,6 +539,13 @@
      * @return
      */
     public Map getReceipts(QoReceipt queryVo) {
+        if (queryVo.getTimeStart() != null && queryVo.getTimeStart() != ""){
+            queryVo.setTimeStart(queryVo.getTimeStart() + " 00:00:00");
+        }
+        if (queryVo.getTimeStop() != null && queryVo.getTimeStop() != ""){
+            queryVo.setTimeStop(queryVo.getTimeStop() + " 23:59:59");
+        }
+
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
 
         DecimalFormat df = new DecimalFormat("#.00");
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoReceipt.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoReceipt.java
index 3b13438..f4c43d5 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoReceipt.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoReceipt.java
@@ -25,4 +25,13 @@
 
     @Schema(description = "鍏呭�兼満鏃堕棿_缁撴潫")
     public String timeStop;
+
+    /**
+     * 鏄惁浠呭瓨鍦ㄨ禒閫侀噾棰濈殑
+     */
+    public Boolean onlyGift;
+    /**
+     * 鏀堕摱鍛業D
+     */
+    public String cashierId;
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryVo.java
index fb6f34f..be9285f 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryVo.java
@@ -29,8 +29,11 @@
     //@Schema(description = "鏉慖D")
     //public Long villageId ;
     //
-    //@Schema(description = "鐗囧尯ID")
-    //public Long blockId ;
+    @Schema(description = "鐗囧尯ID")
+    public String blockId ;
+
+    @Schema(description = "鍒嗘按鎴縄D")
+    public String divideId ;
 
     @Schema(description = "鍐滄埛濮撳悕")
     public String name;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientTemp/ClientTempCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientTemp/ClientTempCtrl.java
new file mode 100644
index 0000000..d59cac8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientTemp/ClientTempCtrl.java
@@ -0,0 +1,117 @@
+package com.dy.pipIrrSell.clientTemp;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pipIrrGlobal.pojoSe.SeClient;
+import com.dy.pipIrrGlobal.pojoSe.SeClientTemp;
+import com.dy.pipIrrSell.client.ClientSv;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-26 15:03
+ * @LastEditTime 2024-09-26 15:03
+ * @Description
+ */
+
+@Slf4j
+@RestController
+@RequestMapping(path = "client_temp")
+@RequiredArgsConstructor
+public class ClientTempCtrl {
+    private final ClientTempSv clientTempSv;
+    private final ClientSv clientSv;
+
+    /**
+     * 瀵煎叆鍐滄埛
+     * @param townName
+     * @return
+     */
+    @PostMapping(path = "import")
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> importClient(String townName){
+        List<SeClientTemp> list_client = clientTempSv.getClientsByTownName(townName);
+        if(list_client != null && list_client.size() > 0) {
+            JSONArray array_Clients = (JSONArray) JSON.toJSON(list_client);
+            for (int i = 0; i < array_Clients.size(); i++) {
+                JSONObject job_client = array_Clients.getJSONObject(i);
+                String town = job_client.getString("town");
+                String village = job_client.getString("village");
+                String name = job_client.getString("name");
+                String idCard = job_client.getString("idcard");
+                String phone = job_client.getString("phone");
+                if(phone != null && phone.length() > 11) {
+                    phone = phone.substring(0,11);
+                }
+                String address = job_client.getString("address");
+
+                if(town.trim().equals("鍏冮┈闀�6鍙�")) {
+                    SeClient client = new SeClient();
+                    //client.setCountyid(28L);
+                    //client.setTownid(101L);
+                    //client.setVillageid(6L);
+                    client.setCountyid(2024090516595200202L);
+                    client.setTownid(2024090517240900002L);
+                    client.setVillageid(2024090517284400002L);
+                    client.setBlockid(2024090517155600002L);
+                    client.setDivideid(2024090517323800007L);
+                    client.setName(name);
+                    client.setClientnum("28101006" + String.format("%04d", i+1));
+                    client.setDistrictnum(532328101006L);
+                    client.setDistricttitle("鍏冭皨鍘垮厓椹晣娓呭拰绀惧尯灞呮皯濮斿憳浼�");
+                    client.setPhone(phone);
+                    client.setIdcard(idCard);
+                    client.setTypeid(2024090516595201402L);
+                    client.setAddress(address);
+                    client.setOperator (2024090516595200302L);
+                    client.setOperatedt(new Date());
+                    client.setDisabled((byte)0);
+                    client.setDeleted((byte)0);
+
+                    Integer rec = clientSv.addClient(client);
+                } else if(town.trim().equals("鑰佸煄涔�2鍙�")) {
+                    SeClient client = new SeClient();
+                    //client.setCountyid(28L);
+                    //client.setTownid(202L);
+                    //client.setVillageid(204L);
+                    client.setCountyid(2024090516595200202L);
+                    client.setTownid(2024090517252600002L);
+                    client.setVillageid(2024090517294000002L);
+                    client.setBlockid(2024090517155600002L);
+                    client.setDivideid(2024090517355700007L);
+                    client.setName(name);
+                    client.setClientnum("28202204" + String.format("%04d", i));
+                    client.setDistrictnum(532328202204L);
+                    client.setDistricttitle("鍏冭皨鍘胯�佸煄涔℃尐灏忔潙姘戝鍛樹細");
+                    client.setPhone(phone);
+                    client.setIdcard(idCard);
+                    client.setTypeid(2024090516595201402L);
+                    client.setAddress(address);
+                    client.setOperator (2024090516595200302L);
+                    client.setOperatedt(new Date());
+                    client.setDisabled((byte)0);
+                    client.setDeleted((byte)0);
+
+                    Integer rec = clientSv.addClient(client);
+                }
+
+                System.out.println("-----------------------------: " + i);
+            }
+
+        }
+        return BaseResponseUtils.buildSuccess();
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientTemp/ClientTempSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientTemp/ClientTempSv.java
new file mode 100644
index 0000000..3e64c9c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/clientTemp/ClientTempSv.java
@@ -0,0 +1,31 @@
+package com.dy.pipIrrSell.clientTemp;
+
+import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
+import com.dy.pipIrrGlobal.daoSe.SeClientTempMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeClientTemp;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-26 15:03
+ * @LastEditTime 2024-09-26 15:03
+ * @Description
+ */
+
+@Slf4j
+@Service
+public class ClientTempSv {
+    @Autowired
+    private SeClientTempMapper seClientTempMapper;
+
+    @Autowired
+    private SeClientMapper seClientMapper;
+
+    public List<SeClientTemp> getClientsByTownName(String townName ) {
+        return seClientTempMapper.getClientsByTownName(townName);
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java
index 58609ec..9349b5e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java
@@ -160,8 +160,9 @@
 
         // 鑾峰彇鍚勬敮浠樻柟寮廔D
         Long paymentId_cash = 0L;
-        Long paymentId_wechat = 0L;
-        Long paymentId_alipay = 0L;
+        //Long paymentId_wechat = 0L;
+        //Long paymentId_alipay = 0L;
+        Long paymentId_pos = 0L;
         Long paymentId_transfer = 0L;
         List<SePaymentMethod> list_payment = sePaymentMethodMapper.getPaymentMethods();
         for (int i = 0; i < list_payment.size(); i++) {
@@ -169,11 +170,14 @@
             if(paymentMethod.getName().equals("鐜伴噾")) {
                 paymentId_cash = paymentMethod.getId();
             }
-            if(paymentMethod.getName().equals("寰俊鏀粯")) {
-                paymentId_wechat = paymentMethod.getId();
-            }
-            if(paymentMethod.getName().equals("鏀粯瀹濇敮浠�")) {
-                paymentId_alipay = paymentMethod.getId();
+            //if(paymentMethod.getName().equals("寰俊鏀粯")) {
+            //    paymentId_wechat = paymentMethod.getId();
+            //}
+            //if(paymentMethod.getName().equals("鏀粯瀹濇敮浠�")) {
+            //    paymentId_alipay = paymentMethod.getId();
+            //}
+            if(paymentMethod.getName().equals("POS鏈�")) {
+                paymentId_pos = paymentMethod.getId();
             }
             if(paymentMethod.getName().equals("閾惰杞处")) {
                 paymentId_transfer = paymentMethod.getId();
@@ -193,15 +197,17 @@
             String tradeDate = dateFormat.format(calendar.getTime()) ;
             if(cashierId != 1000000L) {
                 Float receivedCash = Optional.ofNullable(seGeneralMapper.getPaymentSums(tradeDate, cashierId, paymentId_cash)).orElse(0f);
-                Float receivedWechat = Optional.ofNullable(seGeneralMapper.getPaymentSums(tradeDate, cashierId,paymentId_wechat)).orElse(0f);
-                Float receivedAlipay = Optional.ofNullable(seGeneralMapper.getPaymentSums(tradeDate, cashierId,paymentId_alipay)).orElse(0f);
+                //Float receivedWechat = Optional.ofNullable(seGeneralMapper.getPaymentSums(tradeDate, cashierId,paymentId_wechat)).orElse(0f);
+                //Float receivedAlipay = Optional.ofNullable(seGeneralMapper.getPaymentSums(tradeDate, cashierId,paymentId_alipay)).orElse(0f);
+                Float receivedPos = Optional.ofNullable(seGeneralMapper.getPaymentSums(tradeDate, cashierId,paymentId_pos)).orElse(0f);
                 Float receivedTransfer = Optional.ofNullable(seGeneralMapper.getPaymentSums(tradeDate, cashierId, paymentId_transfer)).orElse(0f);
 
                 JSONObject job = new JSONObject();
                 job.put("tradeDate", tradeDate);
                 job.put("receivedCash", receivedCash);
-                job.put("receivedWechat", receivedWechat);
-                job.put("receivedAlipay", receivedAlipay);
+                //job.put("receivedWechat", receivedWechat);
+                //job.put("receivedAlipay", receivedAlipay);
+                job.put("receivedPos", receivedPos);
                 job.put("receivedTransfer", receivedTransfer);
                 array_paymentSums.add(job);
 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/resources/application.yml
index 97fc494..bc46e5a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    include: global, database, database-ym, database-pj
+    include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
index 1bbfa52..2e349e8 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
@@ -119,10 +119,6 @@
         String token = Optional.ofNullable(vo.getToken()).orElse("");
         String code = Optional.ofNullable(vo.getCode()).orElse("");
 
-
-
-
-
         if(token.length() > 0 && code.length() > 0) {
             // 浠巗ession涓幏鍙栭獙璇佺爜
             //HttpSession session = (HttpSession) request.getSession();
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml
index 1cb57e0..456aaa4 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
     profiles:
-        include: global, database, database-ym, database-pj
+        include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardCtrl.java
index df89ee5..bfcade6 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardCtrl.java
@@ -4,15 +4,21 @@
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.voSt.VoCardUsage;
 import com.dy.pipIrrGlobal.voSt.VoICCard;
 import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO;
+import com.dy.pipIrrStatistics.card.qo.CardUsageQO;
+import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.BindingResult;
 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;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * @author ZhuBaoMin
@@ -102,4 +108,46 @@
             return BaseResponseUtils.buildException(e.getMessage());
         }
     }
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐碉細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�
+     * @param qo
+     //* @param bindingResult
+     * @return
+     */
+    @GetMapping(path = "/card_usage")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoCardUsage>>> getCardUsages(@Valid CardUsageQO qo, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        try {
+            return BaseResponseUtils.buildSuccess(icCardSv.getCardUsages(qo));
+        } catch (Exception e) {
+            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鑾峰彇鍞按鎬昏淇℃伅锛氬厖鍊奸噾棰濇�昏銆佹按琛ㄦ秷璐归噾棰濇�昏
+     * @param qo
+     * @param bindingResult
+     * @return
+     */
+    @GetMapping(path = "/total_water_use")
+    @SsoAop()
+    public BaseResponse<Map> getTotalWaterUse(@Valid CardUsageQO qo, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        try {
+            return BaseResponseUtils.buildSuccess(icCardSv.getTotalWaterUse(qo));
+        } catch (Exception e) {
+            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java
index c712949..375a1c8 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java
@@ -3,9 +3,10 @@
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
 import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
+import com.dy.pipIrrGlobal.voSt.VoCardUsage;
 import com.dy.pipIrrGlobal.voSt.VoICCard;
-import com.dy.pipIrrGlobal.voSt.VoIntakeAccumulateAmount;
 import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO;
+import com.dy.pipIrrStatistics.card.qo.CardUsageQO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,8 +14,10 @@
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * @author ZhuBaoMin
@@ -150,4 +153,74 @@
         Double totalMoney = seClientCardMapper.getTotalMoneyIcCards();
         return totalMoney ;
     }
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈垫按鍗′娇鐢ㄦ儏鍐碉細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�
+     * @param qo
+     * @return
+     */
+    public QueryResultVo<List<VoCardUsage>> getCardUsages(CardUsageQO qo) {
+
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+
+        if (timeStart != null && timeStart != ""){
+            timeStart = timeStart + " 00:00:00";
+        }else {
+            timeStart = LocalDate.now() + " 00:00:00";
+        }
+        if (timeStop != null && timeStop != ""){
+            timeStop = timeStop + " 23:59:59";
+        }else {
+            timeStop = LocalDateTime.now().toString();
+        }
+        qo.setTimeStart(timeStart);
+        qo.setTimeStop(timeStop);
+
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo);
+
+        //Long itemTotal = seCardOperateMapper.getOpenCountIcCardsCount(params);
+        Integer itemTotal = 0;
+        List<VoCardUsage> all = seClientCardMapper.getCardUsagesCount(params);
+        if(all != null && all.size() > 0) {
+            itemTotal = all.size();
+        }
+
+        QueryResultVo<List<VoCardUsage>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = qo.pageSize ;
+        rsVo.pageCurr = qo.pageCurr ;
+
+        rsVo.calculateAndSet(Long.parseLong(itemTotal.toString()), params);
+        rsVo.obj = seClientCardMapper.getCardUsages(params);
+        return rsVo ;
+    }
+
+    /**
+     * 鑾峰彇鍞按鎬昏淇℃伅锛氬厖鍊奸噾棰濇�昏銆佹按琛ㄦ秷璐归噾棰濇�昏
+     * @param qo
+     * @return
+     */
+    public Map getTotalWaterUse(CardUsageQO qo) {
+
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+
+        if (timeStart != null && timeStart != ""){
+            timeStart = timeStart + " 00:00:00";
+        }else {
+            timeStart = LocalDate.now() + " 00:00:00";
+        }
+        if (timeStop != null && timeStop != ""){
+            timeStop = timeStop + " 23:59:59";
+        }else {
+            timeStop = LocalDateTime.now().toString();
+        }
+
+        Float totalRecharge = Optional.ofNullable(seClientCardMapper.getTotalRecharge(timeStart, timeStop)).orElse(0f);
+        Float totalConsumption = Optional.ofNullable(seClientCardMapper.getTotalConsumption(timeStart, timeStop)).orElse(0f);
+        Map mat_total = new HashMap();
+        mat_total.put("totalRecharge", totalRecharge);
+        mat_total.put("totalConsumption", totalConsumption);
+        return mat_total;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java
index f544193..68ea885 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java
@@ -131,4 +131,5 @@
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
+
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/CardUsageQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/CardUsageQO.java
new file mode 100644
index 0000000..2325a67
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/CardUsageQO.java
@@ -0,0 +1,46 @@
+package com.dy.pipIrrStatistics.card.qo;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-09-13 16:27
+ * @LastEditTime 2024-09-13 16:27
+ * @Description 姘村崱浣跨敤鎯呭喌鏌ヨ瀵硅薄
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CardUsageQO extends QueryConditionVo {
+
+    /**
+     * 鏌ヨ寮�濮嬫椂闂�
+     */
+    //@NotBlank(message = "鏌ヨ寮�濮嬫椂闂翠笉鑳戒负绌�")
+    private String timeStart;
+
+    /**
+     * 鏌ヨ缁撴潫鏃堕棿
+     */
+    //@NotBlank(message = "鏌ヨ缁撴潫鏃堕棿涓嶈兘涓虹┖")
+    private String timeStop;
+
+    /**
+     * 鍐滄埛濮撳悕
+     */
+    private String clientName;
+
+    /**
+     * 姘村崱缂栧彿
+     */
+    private Long cardNum;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    private String clientNum;
+
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml
index 4b6f2e7..295521c 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
     profiles:
-        include: global, database, database-ym, database-pj
+        include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:
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 74589e5..c88ecf0 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
@@ -1,6 +1,7 @@
 package com.dy.pipIrrWechat.command;
 
 import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.multiDataSource.DataSourceContext;
 import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
 import com.dy.common.mw.protocol.p206V1_0_0.downVos.*;
 import com.dy.common.mw.protocol.p206V202404.CodeV202404;
@@ -144,11 +145,12 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
-        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        //comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
         String orderNo = generateOrderNo();
@@ -253,11 +255,12 @@
         }
         Long intakeId = job_rtu.getLong("intakeId");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
-        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        //comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
 
         String commandCode = null;
         if (protocol.equals("p206V202404")) {
@@ -373,11 +376,12 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
-        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        //comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
         String orderNo = generateOrderNo();
@@ -475,11 +479,12 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
-        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        //comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
         String orderNo = generateOrderNo();
@@ -584,11 +589,12 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
-        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        //comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
         String orderNo = generateOrderNo();
@@ -698,11 +704,12 @@
         }
         String rtuAddr = job_rtu.getString("rtuAddr");
         String protocol = job_rtu.getString("protocol");
-        String orgTag = job_rtu.getString("orgTag");
-        if(orgTag == null) {
-            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
-        }
-        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        //String orgTag = job_rtu.getString("orgTag");
+        //if(orgTag == null) {
+        //    return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
+        //}
+        //comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
+        comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
 
         // 鐢熸垚璁㈠崟鍙�
         String orderNo = generateOrderNo();
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/resources/application.yml
index a2178fa..8c10de6 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 spring:
     profiles:
-        include: global, database, database-ym, database-pj
+        include: global, database, database-ym, database-pj, database-test
 
 #actutor鐨剋eb绔彛
 management:

--
Gitblit v1.8.0