From 0fd777e6de7c058accfba355ec419959927e0cb2 Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期三, 27 十二月 2023 16:39:36 +0800
Subject: [PATCH] 2023-12-27 朱宝民 根据条件查询交易汇总记录

---
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryStatistic.java |   33 ++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoStatistics.java                |   42 ++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java     |   26 +++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientMapper.java             |   22 ++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml                            |   95 +++++++++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java       |   59 +++++++++++
 6 files changed, 277 insertions(+), 0 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 e3a16e1..44e1e11 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.VoOperate;
+import com.dy.pipIrrGlobal.voSe.VoStatistics;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -112,4 +113,25 @@
      * @return 绗﹀悎鏉′欢鐨勪氦鏄撹褰�
      */
     List<VoOperate> getOperates(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗绗旀暟姹囨�诲拰浜ゆ槗閲戦姹囨��
+     * @param params
+     * @return
+     */
+    Map getStatisticSums(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇姹囨�昏褰曟暟
+     * @param params
+     * @return
+     */
+    Long getStatisticRecordCount(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇缁熻璁板綍
+     * @param params
+     * @return
+     */
+    List<VoStatistics> getStatistics(Map<?, ?> params);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoStatistics.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoStatistics.java
new file mode 100644
index 0000000..a003b59
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoStatistics.java
@@ -0,0 +1,42 @@
+package com.dy.pipIrrGlobal.voSe;
+
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-27 15:01
+ * @LastEditTime 2023-12-27 15:01
+ * @Description
+ */
+
+@Data
+@Schema(title = "浜ゆ槗姹囨�昏鍥惧璞�")
+public class VoStatistics implements BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(title = "鏉戝簞ID")
+    private Long villageId;
+
+    @Schema(title = "鏉戝簞")
+    private String districtTitle;
+
+    @Schema(title = "涓氬姟绫诲瀷")
+    private String operateType;
+
+    @Schema(title = "浜ゆ槗鏃ユ湡")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date operateDt;
+
+    @Schema(title = "浜ゆ槗绗旀暟")
+    private Integer count;
+
+    @Schema(title = "浜ゆ槗閲戦")
+    private Float money;
+}
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 af1d534..7d32a37 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
@@ -399,6 +399,7 @@
     SELECT id, typeName from se_water_type
   </select>
 
+  <!-- 涓嬪垪鍐呭涓轰氦鏄撴槑缁嗘煡璇� -->
   <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇璐按姹囨�诲拰璐崱姹囨��-->
   <select id="getSums" resultType="java.util.Map">
     SELECT
@@ -477,4 +478,98 @@
     </if>
   </select>
 
+  <!-- 涓嬪垪鍐呭涓轰氦鏄撶粺璁℃煡璇� -->
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗绗旀暟姹囨�诲拰浜ゆ槗閲戦姹囨��-->
+  <select id="getStatisticSums" resultType="java.util.Map">
+    SELECT
+    SUM(count) AS count,
+    SUM(money) AS money
+    FROM
+    (
+      SELECT
+      villageId,
+      districtTitle,
+      operateType,
+      operateDt,
+      count(*) AS count,
+      (sum(money) + sum(cardCost)) AS money
+      FROM v_operate
+      <where>
+        <if test = "villageId != null and villageId > 0">
+          AND villageId = ${villageId}
+        </if>
+
+<!--        <if test = "paymentId != null and paymentId >0">-->
+<!--          AND paymentId = ${paymentId}-->
+<!--        </if>-->
+
+        <if test = "operateTimeStart != null and operateTimeStop != null">
+          AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
+        </if>
+      </where>
+      GROUP BY villageId, districtTitle, operateType, operateDt
+    ) temp
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇姹囨�昏褰曟暟-->
+  <select id="getStatisticRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
+    SELECT
+        COUNT(*) AS recordCount
+    FROM
+    (
+        SELECT
+          villageId,
+          districtTitle,
+          operateType,
+          operateDt,
+          count(*) AS count,
+          (sum(money) + sum(cardCost)) AS money
+        FROM v_operate
+        <where>
+          <if test = "villageId != null and villageId > 0">
+            AND villageId = ${villageId}
+          </if>
+
+<!--          <if test = "paymentId != null and paymentId >0">-->
+<!--            AND paymentId = ${paymentId}-->
+<!--          </if>-->
+
+          <if test = "operateTimeStart != null and operateTimeStop != null">
+            AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
+          </if>
+        </where>
+        GROUP BY villageId, districtTitle, operateType, operateDt
+    ) temp
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇缁熻璁板綍-->
+  <select id="getStatistics" resultType="com.dy.pipIrrGlobal.voSe.VoStatistics">
+    SELECT
+        villageId,
+        districtTitle,
+        operateType,
+        operateDt,
+        count(*) AS count,
+        (sum(money) + sum(cardCost)) AS money
+    FROM v_operate
+    <where>
+      <if test = "villageId != null and villageId > 0">
+        AND villageId = ${villageId}
+      </if>
+
+<!--      <if test = "paymentId != null and paymentId >0">-->
+<!--        AND paymentId = ${paymentId}-->
+<!--      </if>-->
+
+      <if test = "operateTimeStart != null and operateTimeStop != null">
+        AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
+      </if>
+    </where>
+    GROUP BY villageId, districtTitle, operateType, operateDt
+    ORDER BY operateDt
+    <if test="pageCurr != null and pageSize != null">
+      LIMIT ${pageCurr}, ${pageSize}
+    </if>
+  </select>
+
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java
index f115542..46cae34 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientCtrl.java
@@ -93,6 +93,32 @@
     }
 
     /**
+     * 鑾峰彇浜ゆ槗姹囨�昏褰�
+     * @param vo
+     * @return
+     */
+    @Operation(summary = "鑾峰緱涓�椤典氦鏄撴眹鎬昏褰�", description = "杩斿洖涓�椤典氦鏄撴眹鎬昏褰�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛啘鎴锋暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaClient.class))}
+            )
+    })
+    @GetMapping(path = "getStatistics")
+    @SsoAop()
+    public BaseResponse<Map> getStatistics(QueryStatistic vo){
+        try {
+            Map res = clientSv.getStatistics(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鏌ヨ浜ゆ槗姹囨�昏褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
      * 鏍规嵁涓婚敭鑾峰彇涓�涓啘鎴峰璞�
      * @param id
      * @return
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java
index 3d58466..a3f631b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/ClientSv.java
@@ -6,6 +6,7 @@
 import com.dy.pipIrrGlobal.pojoSe.SeClient;
 import com.dy.pipIrrGlobal.voSe.VoClient;
 import com.dy.pipIrrGlobal.voSe.VoOperate;
+import com.dy.pipIrrGlobal.voSe.VoStatistics;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -120,6 +121,64 @@
     }
 
     /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇缁熻璁板綍
+     * @param vo 浜ゆ槗姹囨�绘煡璇㈡潯浠�
+     * @return 浜ゆ槗姹囨�昏褰�
+     */
+    public Map getStatistics(QueryStatistic vo){
+        // 琛ラ綈鏌ヨ鏃堕棿
+        String operateTimeStart = vo.operateTimeStart;
+        String operateTimeStop = vo.operateTimeStop;
+        if(operateTimeStart != null) {
+            operateTimeStart = operateTimeStart + " 00:00:00";
+            vo.setOperateTimeStart(operateTimeStart);
+        }
+        if(operateTimeStop != null) {
+            operateTimeStop = operateTimeStop + " 23:59:59";
+            vo.setOperateTimeStop(operateTimeStop);
+        }
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ;
+
+        // 鑾峰彇姹囨�荤殑浜ゆ槗绗旀暟銆佷氦鏄撻噾棰�
+        Integer count = 0;
+        Float money = 0f;
+        Map map_sum = Optional.ofNullable(seClientMapper.getStatisticSums(params)).orElse(new HashMap());
+        if(map_sum.size() > 0) {
+            count = Integer.parseInt(map_sum.get("count").toString());
+            money = Float.parseFloat(map_sum.get("money").toString());
+        }
+
+        // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
+        Long itemTotal = seClientMapper.getStatisticRecordCount(params);
+
+        Integer pageSize = vo.getPageSize();
+        // 璁$畻鎬婚〉鏁�
+        Integer pageTotal ;
+        pageTotal = (int)Math.ceil((itemTotal==null?0.0D:itemTotal.doubleValue())/pageSize);
+
+        // 鏍规嵁褰撳墠椤电爜鍙婃瘡椤垫暟閲忚绠楀亸绉婚噺
+        Integer pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        params.put("pageCurr", pageCurr);
+
+        List<VoStatistics> lit = seClientMapper.getStatistics(params);
+        Map map_record = new HashMap();
+        map_record.put("itemTotal", itemTotal);
+        map_record.put("pageCurr", vo.pageCurr);
+        map_record.put("pageSize", pageSize);
+        map_record.put("pageTotal", pageTotal);
+        map_record.put("list", lit);
+
+        Map map_result = new HashMap();
+        map_result.put("count", count);
+        map_result.put("money", money);
+        map_result.put("records", map_record);
+
+        return map_result;
+    }
+
+    /**
      * 鏍规嵁涓婚敭鑾峰彇鍐滄埛瀵硅薄
      * @param id 鍐滄埛涓婚敭
      * @return 鍐滄埛瀵硅薄
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryStatistic.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryStatistic.java
new file mode 100644
index 0000000..5ac6c22
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/QueryStatistic.java
@@ -0,0 +1,33 @@
+package com.dy.pipIrrSell.client;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023-12-27 15:33
+ * @LastEditTime 2023-12-27 15:33
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Schema(name = "浜ゆ槗姹囨�绘煡璇㈡潯浠�")
+public class QueryStatistic extends QueryConditionVo {
+    @Schema(description = "鏉慖D")
+    public Long villageId;
+
+    //@Schema(description = "鏀粯鏂瑰紡缂栧彿")
+    //public Long paymentId;
+
+    @Schema(description = "浜ゆ槗鏌ヨ璧峰鏃堕棿")
+    public String operateTimeStart;
+
+    @Schema(description = "浜ゆ槗鏌ヨ鎴鏃堕棿")
+    public String operateTimeStop;
+}

--
Gitblit v1.8.0