From 7e243d1b887bbc82d2d4c8075bf4c4a549e79f68 Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期六, 19 十月 2024 11:58:42 +0800
Subject: [PATCH] 实现接口 获取指定时间内农户充值、消费、余额合计

---
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/IcCardSv.java     |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java   |   42 ++++++++++++++++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java                     |   15 +++++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml                                    |   38 ++++++++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java |   22 +++++++++++
 5 files changed, 116 insertions(+), 3 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java
index 7f24819..a40d8d6 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java
@@ -4,6 +4,7 @@
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
 import com.dy.pipIrrGlobal.voSe.VoClient;
 import com.dy.pipIrrGlobal.voSe.VoClientWechat;
+import com.dy.pipIrrGlobal.voSt.VoCardUsage;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -112,4 +113,18 @@
      * @return
      */
     VoClientWechat getSimpleClientInfo(@Param("sessionId") Long sessionId, @Param("openId") String openId);
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈靛啘鎴凤細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�
+     * @param params
+     * @return
+     */
+    Long getClientUsagesCount(Map<String, Object> params);
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈靛啘鎴凤細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�
+     * @param params
+     * @return
+     */
+    List<VoCardUsage> getClientUsages(Map<String, Object> params);
 }
\ 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 65bb9e1..fefa9d6 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
@@ -475,5 +475,41 @@
     </where>
     LIMIT 0,1
   </select>
-
+  <!--鑾峰彇鎸囧畾鏃堕棿娈靛啘鎴凤細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�-->
+  <select id="getClientUsagesCount" resultType="java.lang.Long">
+    SELECT
+      count(*)
+    FROM se_client cli
+    <where>
+      <if test="clientName != null and clientName != ''">
+        AND cli.name like CONCAT('%', #{clientName}, '%')
+      </if>
+      <if test="clientNum != null and clientNum != ''">
+        AND cli.clientNum like CONCAT('%', #{clientNum}, '%')
+      </if>
+    </where>
+    </select>
+  <!--鑾峰彇鎸囧畾鏃堕棿娈靛啘鎴凤細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�-->
+  <select id="getClientUsages" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage">
+    SELECT
+      cli.name AS clientName,
+      (SELECT ROUND(SUM(rch.amount),2) FROM se_recharge_history rch WHERE rch.clientId = cli.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.client_id = cli.id AND his.cl_dt BETWEEN #{timeStart} AND #{timeStop}) AS totalConsumption,
+      (SELECT ROUND(SUM(card.money),2) FROM se_client_card card WHERE card.clientId = cli.id) AS balance
+    FROM se_client cli
+    <where>
+      <if test="clientName != null and clientName != ''">
+        AND cli.name like CONCAT('%', #{clientName}, '%')
+      </if>
+      <if test="clientNum != null and clientNum != ''">
+        AND cli.clientNum like CONCAT('%', #{clientNum}, '%')
+      </if>
+    </where>
+    ORDER BY totalConsumption DESC, totalRecharge 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-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 375a1c8..f798af0 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
@@ -167,7 +167,7 @@
         if (timeStart != null && timeStart != ""){
             timeStart = timeStart + " 00:00:00";
         }else {
-            timeStart = LocalDate.now() + " 00:00:00";
+            timeStart = LocalDateTime.now().minusYears(1).toString();
         }
         if (timeStop != null && timeStop != ""){
             timeStop = timeStop + " 23:59:59";
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java
index d485488..bd809b3 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java
@@ -6,6 +6,7 @@
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.voSt.*;
 import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO;
+import com.dy.pipIrrStatistics.card.qo.CardUsageQO;
 import com.dy.pipIrrStatistics.client.qo.*;
 import com.dy.pipIrrStatistics.intake.qo.ClientAmountQO;
 import com.dy.pipIrrStatistics.result.StatisticlResultCode;
@@ -316,4 +317,25 @@
             return BaseResponseUtils.buildException(e.getMessage());
         }
     }
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈靛啘鎴凤細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�
+     * @param qo
+    //* @param bindingResult
+     * @return
+     */
+    @GetMapping(path = "/client_usage")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoCardUsage>>> getClientUsages(@Valid CardUsageQO qo, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        try {
+            return BaseResponseUtils.buildSuccess(clientSv.getClientUsages(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/client/ClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
index 334c320..5a61fcf 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
@@ -4,8 +4,10 @@
 import com.dy.pipIrrGlobal.daoRm.RmClientAmountDayLastMapper;
 import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
 import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
+import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
 import com.dy.pipIrrGlobal.voSt.*;
 import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO;
+import com.dy.pipIrrStatistics.card.qo.CardUsageQO;
 import com.dy.pipIrrStatistics.client.qo.*;
 import com.dy.pipIrrStatistics.intake.qo.ClientAmountQO;
 import lombok.extern.slf4j.Slf4j;
@@ -36,9 +38,10 @@
     private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
     @Autowired
     private SeCardOperateMapper seCardOperateMapper;
-
     @Autowired
     private RmClientAmountDayLastMapper rmClientAmountDayLastMapper;
+    @Autowired
+    private SeClientMapper seClientMapper;
 
     /**
      * 鑾峰彇鎸囧畾鏃堕棿娈靛唴寮�闃�娆℃暟瓒呰繃鎸囧畾鍊肩殑鍐滄埛
@@ -520,4 +523,41 @@
         rsVo.obj = rmClientAmountDayLastMapper.getNotRechargeLastClients(params);
         return rsVo ;
     }
+
+    /**
+     * 鑾峰彇鎸囧畾鏃堕棿娈靛啘鎴凤細鍏呭�煎悎璁°�佹秷璐瑰悎璁°�佷綑棰�
+     * @param qo
+     * @return
+     */
+    public QueryResultVo<List<VoCardUsage>> getClientUsages(CardUsageQO qo) {
+
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+
+        if (timeStart != null && timeStart != ""){
+            timeStart = timeStart + " 00:00:00";
+        }else {
+            timeStart = LocalDateTime.now().minusYears(1).toString();
+        }
+        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 = Optional.ofNullable(seClientMapper.getClientUsagesCount(params)).orElse(0L);
+
+        QueryResultVo<List<VoCardUsage>> rsVo = new QueryResultVo<>() ;
+
+        rsVo.pageSize = qo.pageSize ;
+        rsVo.pageCurr = qo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = seClientMapper.getClientUsages(params);
+        return rsVo ;
+    }
 }

--
Gitblit v1.8.0