pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java
@@ -3,9 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dy.pipIrrGlobal.pojoRm.RmOnHourReportLast; import com.dy.pipIrrGlobal.voRm.VoOnHour; import com.dy.pipIrrGlobal.voSt.VoBatteryVolt; import com.dy.pipIrrGlobal.voSt.VoCumulativeFlow; import com.dy.pipIrrGlobal.voSt.VoSignalIntensity; import com.dy.pipIrrGlobal.voSt.*; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -139,4 +137,17 @@ */ List<VoSignalIntensity> getSpecifiedSignalIntakes(Map<?, ?> params); /** * 最近未报数的取水口数量 * @param params * @return */ Long getUnReportedIntakesCount(Map<String, Object> params); /** * 最近未报数的取水口 * @param params * @return */ List<VoIntakeUnReported> getUnReportedIntakes(Map<String, Object> params); } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
@@ -168,6 +168,20 @@ List<VoClient> getLargeWaterConsumptionClients(Map<String, Object> params); /** * 获取指定时间段内用水量低于指定值的农户数量 * @param params * @return */ Long getSmallWaterConsumptionClientsCount(Map<String, Object> params); /** * 获取指定时间段内用水量低于指定值的农户 * @param params * @return */ List<VoClient> getSmallWaterConsumptionClients(Map<String, Object> params); /** * 获取指定时间段内消费金额超过指定值的农户数量 * @param params * @return @@ -182,6 +196,20 @@ List<VoClient> getLargeAmountSpentClients(Map<String, Object> params); /** * 获取指定时间段内消费金额低于指定值的农户数量 * @param params * @return */ Long getSmallAmountSpentClientsCount(Map<String, Object> params); /** * 获取指定时间段内消费金额低于指定值的农户 * @param params * @return */ List<VoClient> getSmallAmountSpentClients(Map<String, Object> params); /** * 获取指定时间段内用水时长超过指定值的农户数量 * @param params * @return @@ -196,6 +224,20 @@ List<VoClient> getLargeWaterDurationClients(Map<String, Object> params); /** * 获取指定时间段内用水时长低于指定值的农户数量 * @param params * @return */ Long getSmallWaterDurationClientsCount(Map<String, Object> params); /** * 获取指定时间段内用水时长低于指定值的农户 * @param params * @return */ List<VoClient> getSmallWaterDurationClients(Map<String, Object> params); /** * 指定时间段用水量超过指定值的取水口数量 * @param params * @return pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoIntakeUnReported.java
New file @@ -0,0 +1,28 @@ package com.dy.pipIrrGlobal.voSt; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; /** * @author :WuZeYu * @Date :2024/10/11 9:45 * @LastEditTime :2024/10/11 9:45 * @Description */ @Data public class VoIntakeUnReported { /** * 取水口编号 */ private String intakeNum; /** * 阀控器地址 */ private String rtuAddr; /** * 阀控器时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private String rtuDt; } pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml
@@ -417,5 +417,38 @@ </if> </trim> </select> <!--获取最近未报数的取水口数量--> <select id="getUnReportedIntakesCount" resultType="java.lang.Long"> SELECT count(*) FROM pr_intake pit LEFT JOIN `rm_on_hour_report_last` rohrl ON pit.id = rohrl.intake_id LEFT JOIN pr_controller pct ON pit.id = pct.intakeId WHERE rohrl.id is NULL <if test="timeStart != null and timeStart != '' "> OR rohrl.rtu_dt < #{timeStart} </if> <if test="timeStop != null and timeStop != '' "> OR rohrl.rtu_dt > #{timeStop} </if> ORDER BY rtu_dt ASC </select> <!--获取最近未报数的取水口--> <select id="getUnReportedIntakes" resultType="com.dy.pipIrrGlobal.voSt.VoIntakeUnReported"> SELECT pit.`name` intakeNum, pct.rtuAddr, rohrl.rtu_dt rtuDt FROM pr_intake pit LEFT JOIN `rm_on_hour_report_last` rohrl ON pit.id = rohrl.intake_id LEFT JOIN pr_controller pct ON pit.id = pct.intakeId WHERE rohrl.id is NULL <if test="timeStart != null"> OR rohrl.rtu_dt < #{timeStart} </if> <if test="timeStop != null"> OR rohrl.rtu_dt > #{timeStop} </if> ORDER BY rtu_dt ASC </select> </mapper> pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -470,7 +470,7 @@ oh.client_name AS clientName, oh.op_ic_card_no AS openIcNum, oh.op_ic_card_addr AS openIcAddr, oh.op_dt AS openTime, oh.open_dt AS openTime, CASE WHEN oh.op_type = 1 THEN '刷卡开阀' WHEN oh.op_type = 3 THEN '中心站开阀' @@ -486,7 +486,7 @@ oh.op_ele_total_amount AS openEleTotalAmount, oh.cl_ic_card_no AS closeIcNum, oh.cl_ic_card_addr AS closeIcAddr, oh.cl_dt AS closeTime, oh.close_dt AS closeTime, CASE WHEN oh.cl_type = 2 THEN '刷卡关阀' WHEN oh.cl_type = 4 THEN '中心站关阀' @@ -781,6 +781,54 @@ </trim> </select> <!--获取指定时间段内用水量低于指定值的农户数量--> <select id="getSmallWaterConsumptionClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client cli <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null"> (SELECT SUM(his.cl_this_amount) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{waterConsumption} </if> </where> </select> <!--获取指定时间段内用水量低于指定值的农户--> <select id="getSmallWaterConsumptionClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient"> SELECT cli.id AS clientId, cli.name AS clientName, cli.clientNum, CONCAT(cli.districtTitle, cli.address) AS address, cli.phone, cli.idCard, IFNULL((SELECT SUM(his.cl_this_amount) FROM rm_open_close_valve_history his <where> his.client_id = cli.id <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''"> AND his.op_dt BETWEEN #{timeStart} AND #{timeStop} </if> </where> ),0) AS waterConsumption FROM se_client cli <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null"> (SELECT SUM(his.cl_this_amount) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{waterConsumption} </if> </where> 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> <!--获取指定时间段内消费金额超过指定值的农户数量--> <select id="getLargeAmountSpentClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount @@ -818,6 +866,53 @@ FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{amountSpent} </if> </where> 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> <!--获取指定时间段内消费金额低于指定值的农户数量--> <select id="getSmallAmountSpentClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client cli <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null"> (SELECT SUM(his.cl_this_money) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{amountSpent} </if> </where> </select> <!--获取指定时间段内消费金额低于指定值的农户--> <select id="getSmallAmountSpentClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient"> SELECT cli.id AS clientId, cli.name AS clientName, cli.clientNum, CONCAT(cli.districtTitle, cli.address) AS address, cli.phone, cli.idCard, IFNULL((SELECT SUM(his.cl_this_money) FROM rm_open_close_valve_history his <where> his.client_id = cli.id <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''"> AND his.op_dt BETWEEN #{timeStart} AND #{timeStop} </if> </where> ),0) AS amountSpent FROM se_client cli <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null"> (SELECT SUM(his.cl_this_money) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{amountSpent} </if> </where> ORDER BY cli.id @@ -875,6 +970,54 @@ </if> </trim> </select> <!--获取指定时间段内用水时长低于指定值的农户数量--> <select id="getSmallWaterDurationClientsCount" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_client cli <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null"> (SELECT SUM(his.cl_this_time) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{waterDuration} </if> </where> </select> <!--获取指定时间段内用水时长低于指定值的农户--> <select id="getSmallWaterDurationClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient"> SELECT cli.id AS clientId, cli.name AS clientName, cli.clientNum, CONCAT(cli.districtTitle, cli.address) AS address, cli.phone, cli.idCard, IFNULL((SELECT SUM(his.cl_this_time) FROM rm_open_close_valve_history his <where> his.client_id = cli.id <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''"> AND his.op_dt BETWEEN #{timeStart} AND #{timeStop} </if> </where> ),0) AS waterDuration FROM se_client cli <where> <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null"> (SELECT SUM(his.cl_this_time) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) < #{waterDuration} </if> </where> 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> <!--指定时间段用水量超过指定值的取水口数量--> <select id="getUseWaterGtValueIntakesCount" resultType="java.lang.Long"> select pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
@@ -489,7 +489,7 @@ oh.client_name AS clientName, oh.op_ic_card_no AS openIcNum, oh.op_ic_card_addr AS openIcAddr, oh.op_dt AS openTime, oh.open_dt AS openTime, CASE WHEN oh.op_type = 1 THEN '刷卡开阀' WHEN oh.op_type = 3 THEN '中心站开阀' @@ -505,7 +505,7 @@ oh.op_ele_total_amount AS openEleTotalAmount, oh.cl_ic_card_no AS closeIcNum, oh.cl_ic_card_addr AS closeIcAddr, oh.cl_dt AS closeTime, oh.close_dt AS closeTime, CASE WHEN oh.cl_type = 2 THEN '刷卡关阀' WHEN oh.cl_type = 4 THEN '中心站关阀' pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.dy.common.multiDataSource.DataSourceContext; import com.dy.common.mw.protocol.Command; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.QueryResultVo; @@ -16,6 +17,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; @@ -48,8 +50,21 @@ @Autowired private RestTemplate restTemplate; protected static String mwUrlSendCom = "http://127.0.0.1:8070/rtuMw/com/send"; // protected static String mwUrlSendCom = "http://127.0.0.1:8070/rtuMw/com/send"; protected String comSendUrl; /** * pro_mw:属性 * tag从控制器中获取 * key_mw:url的key */ private Environment env = null; private String pro_mw = "mw"; private String key_mw = "comSendUrl"; @Autowired public ControllerSv(Environment env) { this.env = env; } /** * 根据指定获取控制器记录 @@ -59,18 +74,13 @@ */ public QueryResultVo<List<VoController>> getControllers(QueryVo queryVo) { Command com = new Command(); Command com = new Command() ; com.id = Command.defaultId; com.code = "LCD0001"; com.type = "innerCommand"; comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); JSONObject response = null; try { response = (JSONObject) JSON.toJSON(sendCom2Mw(com)); }catch (Exception e) { QueryResultVo<List<VoController>> rsVo = new QueryResultVo<>(); return rsVo; } JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com)); if (response != null && response.getString("code").equals("0001")) { @@ -234,7 +244,7 @@ * @return */ protected BaseResponse sendCom2Mw(Command com) { String url = UriComponentsBuilder.fromUriString(mwUrlSendCom) String url = UriComponentsBuilder.fromUriString(comSendUrl) .build() .toUriString(); HttpHeaders headers = new HttpHeaders(); pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientCtrl.java
@@ -96,6 +96,26 @@ } /** * 获取指定时间段内用水量低于指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getSmallWaterConsumptionClients") @SsoAop() public BaseResponse<QueryResultVo<List<VoClient>>> getSmallWaterConsumptionClients(@Valid WaterConsumptionQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getSmallWaterConsumptionClients(qo)); } catch (Exception e) { log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取指定时间段内消费金额超过指定值的农户 * @param qo * @param bindingResult @@ -116,6 +136,26 @@ } /** * 获取指定时间段内消费金额低于指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getSmallAmountSpentClients") @SsoAop() public BaseResponse<QueryResultVo<List<VoClient>>> getSmallAmountSpentClients(@Valid AmountSpentQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getSmallAmountSpentClients(qo)); } catch (Exception e) { log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 获取指定时间段内用水时长超过指定值的农户 * @param qo * @param bindingResult @@ -136,6 +176,26 @@ } /** * 获取指定时间段内用水时长低于指定值的农户 * @param qo * @param bindingResult * @return */ @GetMapping(path = "/getSmallWaterDurationClients") @SsoAop() public BaseResponse<QueryResultVo<List<VoClient>>> getSmallWaterDurationClients(@Valid WaterDurationQO qo, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } try { return BaseResponseUtils.buildSuccess(clientSv.getSmallWaterDurationClients(qo)); } catch (Exception e) { log.error("获取开卡记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 统计指定月份各农户各天用水量及消费金额 * @param qo * @return pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/client/ClientSv.java
@@ -149,6 +149,42 @@ } /** * 获取指定时间段内用水量低于指定值的农户 * @param qo * @return */ public QueryResultVo<List<VoClient>> getSmallWaterConsumptionClients(WaterConsumptionQO qo) { /** * 补齐起止时间 */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; } if(timeStop != null && timeStop != "") { 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(rmOpenCloseValveHistoryMapper.getSmallWaterConsumptionClientsCount(params)).orElse(0L); QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = rmOpenCloseValveHistoryMapper.getSmallWaterConsumptionClients(params); return rsVo ; } /** * 获取指定时间段内消费金额超过指定值的农户 * @param qo * @return @@ -185,6 +221,42 @@ } /** * 获取指定时间段内消费金额低于指定值的农户 * @param qo * @return */ public QueryResultVo<List<VoClient>> getSmallAmountSpentClients(AmountSpentQO qo) { /** * 补齐起止时间,如果开始时间为空,则默认为当前日期 */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; } if(timeStop != null && timeStop != "") { 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(rmOpenCloseValveHistoryMapper.getSmallAmountSpentClientsCount(params)).orElse(0L); QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = rmOpenCloseValveHistoryMapper.getSmallAmountSpentClients(params); return rsVo ; } /** * 获取指定时间段内用水时长超过指定值的农户 * @param qo * @return @@ -221,6 +293,42 @@ } /** * 获取指定时间段内用水时长低于指定值的农户 * @param qo * @return */ public QueryResultVo<List<VoClient>> getSmallWaterDurationClients(WaterDurationQO qo) { /** * 补齐起止时间,如果开始时间为空,则默认为当前日期 */ String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; } if(timeStop != null && timeStop != "") { 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(rmOpenCloseValveHistoryMapper.getSmallWaterDurationClientsCount(params)).orElse(0L); QueryResultVo<List<VoClient>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = rmOpenCloseValveHistoryMapper.getSmallWaterDurationClients(params); return rsVo ; } /** * 指定时间段内开物理卡农户 * @param qo * @return pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java
@@ -771,4 +771,41 @@ rsVo.obj = rmLossDayLastMapper.getMonthLossAmount(params); return rsVo ; } /** * 最近未报数的取水口 * @param qo * @return */ public QueryResultVo<List<VoIntakeUnReported>> getUnReportedIntakes(CommonQO qo) { String timeStart = qo.getTimeStart(); String timeStop = qo.getTimeStop(); if(timeStart == "") { timeStart = null; } if(timeStop == "") { timeStop = null; } if(timeStart != null && timeStart != "") { timeStart = timeStart + " 00:00:00"; } qo.setTimeStart(timeStart); if(timeStop != null && timeStop != "") { timeStop = timeStop + " 23:59:59"; } qo.setTimeStop(timeStop); Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); Long itemTotal = rmOnHourReportLastMapper.getUnReportedIntakesCount(params); QueryResultVo<List<VoIntakeUnReported>> rsVo = new QueryResultVo<>() ; rsVo.pageSize = qo.pageSize ; rsVo.pageCurr = qo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = rmOnHourReportLastMapper.getUnReportedIntakes(params); return rsVo ; } } pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java
@@ -419,4 +419,21 @@ return BaseResponseUtils.buildException(e.getMessage()) ; } } /** * 最近未报数的取水口 * @param * @return */ @GetMapping(path = "/getUnReportedIntakes") @SsoAop() public BaseResponse<QueryResultVo<List<VoIntakeUnReported>>> getUnReportedIntakes(CommonQO qo) { try { QueryResultVo<List<VoIntakeUnReported>> res = intakeSv.getUnReportedIntakes(qo); return BaseResponseUtils.buildSuccess(res); } catch (Exception e) { log.error("获取记录异常", e); return BaseResponseUtils.buildException(e.getMessage()) ; } } }