pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportHistoryMapper.java
@@ -4,6 +4,7 @@ import com.dy.pipIrrGlobal.pojoRm.RmOnHourReportHistory; import com.dy.pipIrrGlobal.voRm.VoOnHour; import com.dy.pipIrrGlobal.voSt.VoIntake; import com.dy.pipIrrGlobal.voSt.VoIntakeAccumulateAmount; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -86,4 +87,17 @@ */ List<VoIntake> getNotOnlineIntakes(Map<?, ?> params); /** * 指定时间段内用水量超过指定值的取水口数量 * @param params * @return */ Long getUseWaterGtValueIntakesCount(Map<String, Object> params); /** * 指定时间段内用水量超过指定值的取水口 * @param params * @return */ List<VoIntakeAccumulateAmount> getUseWaterGtValueIntakes(Map<String, Object> params); } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeAccumulateAmount.java
New file @@ -0,0 +1,19 @@ package com.dy.pipIrrGlobal.voSt; import lombok.Data; /** * @author :WuZeYu * @Date :2024/8/5 10:45 * @LastEditTime :2024/8/5 10:45 * @Description 取水口累积流量 大于 指定值 */ @Data public class VoIntakeAccumulateAmount extends VoIntake{ private static final long serialVersionUID = 202408051046001L; /** * 指定值 */ private Double value; } pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -72,7 +72,7 @@ pipIrr: global: dev: flase #是否开发阶段,true或false dev: true #是否开发阶段,true或false dsName: ym #开发阶段,设置临时的数据库名称 mw: webPort: 8070 pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportHistoryMapper.xml
@@ -283,7 +283,71 @@ </if> </trim> </select> <!--指定时间段内用水量超过指定值的取水口数量--> <select id="getUseWaterGtValueIntakesCount" resultType="java.lang.Long"> select count(*) from ( SELECT inta.id AS intakeId, inta.NAME AS intakeNum, blo.NAME AS blockName , IFNULL(b.total_amount, 0)-IFNULL(a.total_amount, 0) AS value FROM pr_intake inta INNER JOIN ba_block blo ON blo.id = inta.blockId LEFT JOIN (SELECT intake_id, total_amount FROM rm_on_hour_report_history rohrs WHERE rohrs.rtu_dt = ( SELECT MAX(rtu_dt) FROM rm_on_hour_report_history WHERE rtu_dt <= #{timeStart})) AS a ON inta.id = a.intake_id LEFT JOIN ( SELECT intake_id, total_amount FROM rm_on_hour_report_history rohrs WHERE rohrs.rtu_dt = ( SELECT MAX(rtu_dt) FROM rm_on_hour_report_history WHERE rtu_dt <= #{timeStop})) AS b ON inta.id = b.intake_id WHERE IFNULL(b.total_amount, 0)-IFNULL(a.total_amount, 0) > #{value} AND inta.deleted = 0 ) c </select> <!--指定时间段内用水量超过指定值的取水口--> <select id="getUseWaterGtValueIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeAccumulateAmount"> SELECT inta.id AS intakeId, inta.NAME AS intakeNum, blo.NAME AS blockName , IFNULL(b.total_amount, 0)-IFNULL(a.total_amount, 0) AS value FROM pr_intake inta INNER JOIN ba_block blo ON blo.id = inta.blockId LEFT JOIN (SELECT intake_id, total_amount FROM rm_on_hour_report_history rohrs WHERE rohrs.rtu_dt = ( SELECT MAX(rtu_dt) FROM rm_on_hour_report_history WHERE rtu_dt <= #{timeStart})) AS a ON inta.id = a.intake_id LEFT JOIN ( SELECT intake_id, total_amount FROM rm_on_hour_report_history rohrs WHERE rohrs.rtu_dt = ( SELECT MAX(rtu_dt) FROM rm_on_hour_report_history WHERE rtu_dt <= #{timeStop})) AS b ON inta.id = b.intake_id WHERE IFNULL(b.total_amount, 0)-IFNULL(a.total_amount, 0) > #{value} AND inta.deleted = 0 ORDER BY inta.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/intake/IntakeSv.java
@@ -5,6 +5,7 @@ import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper; import com.dy.pipIrrGlobal.daoRm.RmOnHourReportLastMapper; import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveLastMapper; import com.dy.pipIrrGlobal.voRm.VoOpenCloseValve; import com.dy.pipIrrGlobal.voSt.*; import com.dy.pipIrrStatistics.intake.qo.*; import com.dy.pipIrrGlobal.voSt.VoBatteryVolt; @@ -15,7 +16,7 @@ import com.dy.pipIrrStatistics.intake.qo.BatteryVoltQO; import com.dy.pipIrrStatistics.intake.qo.CumulativeFlowQO; import com.dy.pipIrrStatistics.intake.qo.IntakeQO; import com.dy.pipIrrStatistics.intake.qo.IntakeValueQO; import com.dy.pipIrrStatistics.intake.qo.IntakeCountValueQO; import com.dy.pipIrrStatistics.intake.qo.SignalIntensityQO; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; @@ -25,6 +26,7 @@ import java.text.DecimalFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; import java.util.Map; import java.util.Optional; @@ -231,7 +233,7 @@ * @param qo * @return */ public QueryResultVo<List<VoIntakeOpenCount>> getOpenValveGtIntakes(IntakeValueQO qo) { public QueryResultVo<List<VoIntakeOpenCount>> getOpenValveGtIntakes(IntakeCountValueQO qo) { String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); @@ -269,7 +271,7 @@ * @param qo * @return */ public QueryResultVo<List<VoIntakeOpenCount>> getOpenValveLtIntakes(IntakeValueQO qo) { public QueryResultVo<List<VoIntakeOpenCount>> getOpenValveLtIntakes(IntakeCountValueQO qo) { String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); @@ -422,4 +424,42 @@ return vo; } /** * 指定时间段内用水量超过指定值的取水口 * @param qo * @return */ public QueryResultVo<List<VoIntakeAccumulateAmount>> getUseWaterGtValueIntakes(IntakeAmountValueQO qo) { String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; } else { timeStart = LocalDateTime.of(2024, 1, 1, 0, 0, 0).toString(); } qo.setTimeStart(timeStart); if(timeStop != null && timeStop != "") { timeStop = timeStop + " 23:59:59"; }else { timeStop = LocalDate.now() + " 23:59:59"; } qo.setTimeStop(timeStop); if (qo.getValue() == null){ qo.setValue(0.0); } Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); Long itemTotal = rmOnHourReportHistoryMapper.getUseWaterGtValueIntakesCount(params); QueryResultVo<List<VoIntakeAccumulateAmount>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = rmOnHourReportHistoryMapper.getUseWaterGtValueIntakes(params); return rsVo ; } } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java
@@ -15,7 +15,7 @@ import com.dy.pipIrrStatistics.intake.qo.CumulativeFlowQO; import com.dy.pipIrrStatistics.intake.qo.IntakeQO; import com.dy.pipIrrStatistics.intake.qo.SignalIntensityQO; import com.dy.pipIrrStatistics.intake.qo.IntakeValueQO; import com.dy.pipIrrStatistics.intake.qo.IntakeCountValueQO; import com.dy.pipIrrStatistics.result.StatisticlResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -180,7 +180,7 @@ */ @GetMapping(path = "/getOpenValveGtIntakes") @SsoAop() public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveGtIntakes(IntakeValueQO qo) { public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveGtIntakes(IntakeCountValueQO qo) { try { QueryResultVo<List<VoIntakeOpenCount>> res = intakeSv.getOpenValveGtIntakes(qo); if(res.itemTotal == 0) { @@ -201,7 +201,7 @@ */ @GetMapping(path = "/getOpenValveLtIntakes") @SsoAop() public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveLtIntakes(IntakeValueQO qo) { public BaseResponse<QueryResultVo<List<VoIntakeOpenCount>>> getOpenValveLtIntakes(IntakeCountValueQO qo) { try { QueryResultVo<List<VoIntakeOpenCount>> res = intakeSv.getOpenValveLtIntakes(qo); if(res.itemTotal == 0) { @@ -213,4 +213,25 @@ return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 指定时间段内用水量超过指定值的取水口 * @param * @return */ @GetMapping(path = "/getUseWaterGtValueIntakes") @SsoAop() public BaseResponse<QueryResultVo<List<VoIntakeAccumulateAmount>>> getUseWaterGtValueIntakes(IntakeAmountValueQO qo) { try { QueryResultVo<List<VoIntakeAccumulateAmount>> res = intakeSv.getUseWaterGtValueIntakes(qo); if(res.itemTotal == 0) { return BaseResponseUtils.buildErrorMsg(StatisticlResultCode.NO_RECORDS.getMessage()); } return BaseResponseUtils.buildSuccess(res); } catch (Exception e) { log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeAmountValueQO.java
New file @@ -0,0 +1,20 @@ package com.dy.pipIrrStatistics.intake.qo; import jakarta.validation.constraints.NotBlank; import lombok.Data; /** * @author :WuZeYu * @Date :2024/8/6 9:32 * @LastEditTime :2024/8/3 9:32 * @Description */ @Data public class IntakeAmountValueQO extends IntakeQO { /** * 值 */ private Double value; } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeCountValueQO.java
File was renamed from pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/IntakeValueQO.java @@ -12,7 +12,7 @@ * @Description */ @Data public class IntakeValueQO extends IntakeQO { public class IntakeCountValueQO extends IntakeQO { /**