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