zhubaomin
2024-08-12 2555e23c828b603944f51883a580b401962b2209
2024-08-12 朱宝民 4个查询统计接口
1 文件已重命名
4个文件已修改
2个文件已添加
343 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}