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