pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java
@@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dy.pipIrrGlobal.pojoSe.SeVcOperate; import com.dy.pipIrrGlobal.voSt.VoClientRegisterVC; import com.dy.pipIrrGlobal.voSt.VoClientStatistics; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -41,5 +41,39 @@ * @param params * @return */ List<VoClientRegisterVC> getRegisterVcClients(Map<?, ?> params); List<VoClientStatistics> getRegisterVcClients(Map<?, ?> params); /** * 指定时间段内注册总数量 * @param params * @return */ Long getRegisterCount(Map<?, ?> params); /** * 指定时间段充值总数量 * @param params * @return */ Long getRechargeCount(Map<?, ?> params); /** * 当前余额总量 * @return */ Double getTotalBalance(); /** * 指定时间段内虚拟卡充值金额超过指定值的农户记录数量 * @param params * @return */ Long getLargeRechargeClientsCount(Map<?, ?> params); /** * 指定时间段内虚拟卡充值金额超过指定值的农户 * @param params * @return */ List<VoClientStatistics> getLargeRechargeClients(Map<?, ?> params); } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java
File was renamed from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRegisterVC.java @@ -7,12 +7,12 @@ * @author ZhuBaoMin * @date 2024-08-12 14:37 * @LastEditTime 2024-08-12 14:37 * @Description 农户注册虚拟卡视图 * @Description 统计模块农户视图 */ @Data @JsonPropertyOrder({"clientId","clientName"}) public class VoClientRegisterVC { public class VoClientStatistics { private static final long serialVersionUID = 202408121438001L; /** pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml
@@ -143,7 +143,7 @@ </select> <!--指定时间段内注册虚拟卡的农户--> <select id="getRegisterVcClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientRegisterVC"> <select id="getRegisterVcClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientStatistics"> SELECT cli.id AS clientId, cli.name AS clientName FROM se_client cli @@ -159,4 +159,57 @@ </if> </trim> </select> <!--指定时间段内注册总数量--> <select id="getRegisterCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_vc_operate ope WHERE ope.operate_type = 1 AND ope.operate_time BETWEEN #{timeStart} AND #{timeStop} </select> <!--指定时间段充值总数量--> <select id="getRechargeCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_vc_operate ope INNER JOIN se_vc_recharge rec ON rec.id = ope.recharge_id WHERE ope.operate_type = 2 AND rec.order_state = 2 AND ope.operate_time BETWEEN #{timeStart} AND #{timeStop} </select> <!--当前余额总量--> <select id="getTotalBalance" resultType="java.lang.Double"> SELECT SUM(money) AS totalBalance FROM se_virtual_card </select> <!--指定时间段内虚拟卡充值金额超过指定值的农户记录数量--> <select id="getLargeRechargeClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client cli WHERE (SELECT SUM(recharge_amount) FROM se_vc_recharge rec WHERE rec.client_id = cli.id AND rec.order_state = 2 AND rec.order_time BETWEEN #{timeStart} AND #{timeStop}) > #{totalRecharge} </select> <!--指定时间段内虚拟卡充值金额超过指定值的农户--> <select id="getLargeRechargeClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientStatistics"> SELECT cli.id AS clientId, cli.name AS clientName FROM se_client cli WHERE (SELECT SUM(recharge_amount) FROM se_vc_recharge rec WHERE rec.client_id = cli.id AND rec.order_state = 2 AND rec.order_time BETWEEN #{timeStart} AND #{timeStop}) > #{totalRecharge} ORDER BY cli.id <trim prefix="limit "> <if test="start != null and count != null"> #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} </if> </trim> </select> </mapper> pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java
@@ -4,8 +4,10 @@ import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.voSt.VoClientRegisterVC; import com.dy.pipIrrGlobal.voSt.VoClientStatistics; import com.dy.pipIrrStatistics.card.qo.CommonQO; import com.dy.pipIrrStatistics.card.qo.StartStopDateQO; import com.dy.pipIrrStatistics.card.qo.TotalRechargeQO; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -39,7 +41,7 @@ */ @GetMapping(path = "/getRegisterVcClients") @SsoAop() public BaseResponse<QueryResultVo<List<VoClientRegisterVC>>> getRegisterVcClients(@Valid CommonQO qo, BindingResult bindingResult) { public BaseResponse<QueryResultVo<List<VoClientStatistics>>> getRegisterVcClients(@Valid CommonQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } @@ -52,4 +54,81 @@ } } /** * 指定时间段内注册总数量 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getRegisterCount") @SsoAop() public BaseResponse<Boolean> getRegisterCount(@Valid StartStopDateQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(virtualCardSv.getRegisterCount(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 指定时间段充值总数量 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getRechargeCount") @SsoAop() public BaseResponse<Boolean> getRechargeCount(@Valid StartStopDateQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(virtualCardSv.getRechargeCount(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 当前余额总量 * @return */ @GetMapping(path = "/getTotalBalance") @SsoAop() public BaseResponse<Boolean> getTotalBalance() { try { return BaseResponseUtils.buildSuccess(virtualCardSv.getTotalBalance()); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 指定时间段内虚拟卡充值金额超过指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getLargeRechargeClients") @SsoAop() public BaseResponse<QueryResultVo<List<VoClientStatistics>>> getLargeRechargeClients(@Valid TotalRechargeQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(virtualCardSv.getLargeRechargeClients(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java
@@ -2,8 +2,10 @@ import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.daoSe.SeVcOperateMapper; import com.dy.pipIrrGlobal.voSt.VoClientRegisterVC; import com.dy.pipIrrGlobal.voSt.VoClientStatistics; import com.dy.pipIrrStatistics.card.qo.CommonQO; import com.dy.pipIrrStatistics.card.qo.StartStopDateQO; import com.dy.pipIrrStatistics.card.qo.TotalRechargeQO; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -32,7 +34,7 @@ * @param qo * @return */ public QueryResultVo<List<VoClientRegisterVC>> getRegisterVcClients(CommonQO qo) { public QueryResultVo<List<VoClientStatistics>> getRegisterVcClients(CommonQO qo) { /** * 补齐起止时间,如果开始时间为空,则默认为当前日期 */ @@ -55,7 +57,7 @@ // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(seVcOperateMapper.getRegisterVcClientsCount(params)).orElse(0L); QueryResultVo<List<VoClientRegisterVC>> rsVo = new QueryResultVo<>() ; QueryResultVo<List<VoClientStatistics>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; @@ -64,4 +66,107 @@ rsVo.obj = seVcOperateMapper.getRegisterVcClients(params); return rsVo ; } /** * 指定时间段内注册总数量 * @param qo * @return */ public Long getRegisterCount(StartStopDateQO qo) { /** * 补齐起止时间,如果开始时间为空,则默认为当前日期 */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null) { timeStart = timeStart + " 00:00:00"; }else { timeStart = LocalDate.now() + " 00:00:00"; } if(timeStop != null) { timeStop = timeStop + " 23:59:59"; } qo.setTimeStart(timeStart); qo.setTimeStop(timeStop); // 生成查询参数 Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 return Optional.ofNullable(seVcOperateMapper.getRegisterCount(params)).orElse(0L); } /** * 指定时间段充值总数量 * @param qo * @return */ public Long getRechargeCount(StartStopDateQO qo) { /** * 补齐起止时间,如果开始时间为空,则默认为当前日期 */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null) { timeStart = timeStart + " 00:00:00"; }else { timeStart = LocalDate.now() + " 00:00:00"; } if(timeStop != null) { timeStop = timeStop + " 23:59:59"; } qo.setTimeStart(timeStart); qo.setTimeStop(timeStop); // 生成查询参数 Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; return Optional.ofNullable(seVcOperateMapper.getRechargeCount(params)).orElse(0L); } /** * 当前余额总量 * @return */ public Double getTotalBalance() { return Optional.ofNullable(seVcOperateMapper.getTotalBalance()).orElse(0.0); } /** * 指定时间段内虚拟卡充值金额超过指定值的农户 * @param qo * @return */ public QueryResultVo<List<VoClientStatistics>> getLargeRechargeClients(TotalRechargeQO qo) { /** * 补齐起止时间,如果开始时间为空,则默认为当前日期 */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null) { timeStart = timeStart + " 00:00:00"; }else { timeStart = LocalDate.now() + " 00:00:00"; } if(timeStop != null) { timeStop = timeStop + " 23:59:59"; } qo.setTimeStart(timeStart); qo.setTimeStop(timeStop); // 生成查询参数 Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ; // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(seVcOperateMapper.getLargeRechargeClientsCount(params)).orElse(0L); QueryResultVo<List<VoClientStatistics>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = seVcOperateMapper.getLargeRechargeClients(params); return rsVo ; } } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java
New file @@ -0,0 +1,30 @@ package com.dy.pipIrrStatistics.card.qo; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; /** * @author ZhuBaoMin * @date 2024-08-12 15:52 * @LastEditTime 2024-08-12 15:52 * @Description */ @Data @EqualsAndHashCode(callSuper = false) public class StartStopDateQO { /** * 开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd") private String timeStart; /** * 结束时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @NotBlank(message = "结束时间不能为空") private String timeStop; } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java
New file @@ -0,0 +1,22 @@ package com.dy.pipIrrStatistics.card.qo; import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; /** * @author ZhuBaoMin * @date 2024-08-12 16:58 * @LastEditTime 2024-08-12 16:58 * @Description 充值金额合计查询对象 */ @Data @EqualsAndHashCode(callSuper = false) public class TotalRechargeQO extends CommonQO { /** * 充值金额合计 */ @NotNull(message = "指定充值金额不能为空") private Double totalRecharge; }