大屏展示--昨日农户用水前5名统计,昨日取水口用水统计前5名统计实现
| | |
| | | package com.dy.pipIrrGlobal.daoLargeScreen; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoTopXClient; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoTopXIntake; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | |
| | | */ |
| | | Integer mTotalCountOfNeverAlarm() ; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 某日农户用水前X名 |
| | | * @param idStart 起始id |
| | | * @param idEnd 截止id |
| | | * @param count 前几名 |
| | | * @return 实体集合 |
| | | */ |
| | | List<VoTopXClient> topXClientAtCertainDay(@Param("idStart") Long idStart, @Param("idEnd") Long idEnd, @Param("count") int count) ; |
| | | |
| | | /** |
| | | * 某日取水口用水前X名 |
| | | * @param idStart 起始id |
| | | * @param idEnd 截止id |
| | | * @param count 前几名 |
| | | * @return 实体集合 |
| | | */ |
| | | List<VoTopXIntake> topXIntakeAtCertainDay(@Param("idStart") Long idStart, @Param("idEnd") Long idEnd, @Param("count") int count) ; |
| | | |
| | | |
| | | } |
| | |
| | | package com.dy.pipIrrGlobal.daoSpecial; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.dy.pipIrrGlobal.voSpecial.CoAbnormalCloseValve; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoAbnormalCloseValve; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoSteal; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | * @param params 查询条件 |
| | | * @return 实体集合 |
| | | */ |
| | | List<CoAbnormalCloseValve> selectAbnormalCloseValveSome(Map<?, ?> params) ; |
| | | List<VoAbnormalCloseValve> selectAbnormalCloseValveSome(Map<?, ?> params) ; |
| | | |
| | | } |
File was renamed from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/CoAbnormalCloseValve.java |
| | |
| | | "thisMoney", |
| | | "thisTime" |
| | | }) |
| | | public class CoAbnormalCloseValve extends VoSteal{ |
| | | public class VoAbnormalCloseValve extends VoSteal{ |
| | | private static final long serialVersionUID = 202502081128001L; |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrGlobal.voSpecial; |
| | | |
| | | import com.alibaba.fastjson2.annotation.JSONField; |
| | | import com.alibaba.fastjson2.writer.ObjectWriterImplToString; |
| | | import com.fasterxml.jackson.annotation.JsonPropertyOrder; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/2/10 8:52 |
| | | * @Description |
| | | */ |
| | | |
| | | @Data |
| | | @JsonPropertyOrder({"id", |
| | | "clientId", |
| | | "clientName", |
| | | "clientNum", |
| | | "clientAddress", |
| | | "amount" |
| | | }) |
| | | public class VoTopXClient { |
| | | private static final long serialVersionUID = 202502100853001L; |
| | | /** |
| | | * 数据记录id(开关阀记录) |
| | | */ |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
| | | public Long id ; |
| | | |
| | | /** |
| | | * 农户ID |
| | | */ |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
| | | public Long clientId; |
| | | /** |
| | | * 农户姓名 |
| | | */ |
| | | public String clientName; |
| | | |
| | | /** |
| | | * 农户编号 |
| | | */ |
| | | public String clientNum; |
| | | |
| | | /** |
| | | * 农户地址 |
| | | */ |
| | | public String clientAddress; |
| | | |
| | | /** |
| | | * 用水量 |
| | | */ |
| | | public Double amount; |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.pipIrrGlobal.voSpecial; |
| | | |
| | | import com.alibaba.fastjson2.annotation.JSONField; |
| | | import com.alibaba.fastjson2.writer.ObjectWriterImplToString; |
| | | import com.fasterxml.jackson.annotation.JsonPropertyOrder; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/2/10 9:13 |
| | | * @Description |
| | | */ |
| | | |
| | | @Data |
| | | @JsonPropertyOrder({"id", |
| | | "intakeId", |
| | | "intakeNum", |
| | | "intakeLng", |
| | | "intakeLat", |
| | | "amount" |
| | | }) |
| | | public class VoTopXIntake { |
| | | private static final long serialVersionUID = 202502100913001L; |
| | | /** |
| | | * 数据记录id(开关阀记录) |
| | | */ |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
| | | public Long id ; |
| | | |
| | | /** |
| | | * 农户ID |
| | | */ |
| | | @JSONField(serializeUsing= ObjectWriterImplToString.class) |
| | | public Long intakeId; |
| | | /** |
| | | * 取水口编号 |
| | | */ |
| | | public String intakeNum; |
| | | /** |
| | | * 取水口经度 |
| | | */ |
| | | public Double intakeLng; |
| | | /** |
| | | * 取水口纬度 |
| | | */ |
| | | public Double intakeLat; |
| | | |
| | | /** |
| | | * 用水量 |
| | | */ |
| | | public Double amount; |
| | | |
| | | } |
| | |
| | | where temTb.intake_id is null |
| | | </select> |
| | | |
| | | |
| | | |
| | | |
| | | <select id="topXClientAtCertainDay" resultType="com.dy.pipIrrGlobal.voSpecial.VoTopXClient"> |
| | | select mTb.id as id, mTb.client_id as clientId, |
| | | scTb.name as clientName, scTb.clientNum as clientNum, scTb.address as clientAddress, |
| | | mTb.amount as amount |
| | | from rm_client_amount_day mTb |
| | | left join se_client scTb on scTb.id = mTb.client_id |
| | | <where> |
| | | <if test = "idStart != null"> |
| | | mTb.id <![CDATA[>=]]> #{idStart, javaType=LONG, jdbcType=BIGINT} |
| | | </if> |
| | | <if test = "idEnd != null"> |
| | | and mTb.id <![CDATA[<=]]> #{idEnd, javaType=LONG, jdbcType=BIGINT} |
| | | </if> |
| | | </where> |
| | | order by mTb.amount DESC |
| | | <trim prefix="limit " > |
| | | <if test="count != null"> |
| | | 0, #{count,javaType=Integer, jdbcType=INTEGER} |
| | | </if> |
| | | </trim> |
| | | </select> |
| | | |
| | | |
| | | <select id="topXIntakeAtCertainDay" resultType="com.dy.pipIrrGlobal.voSpecial.VoTopXIntake"> |
| | | select mTb.id as id, mTb.intake_id as intakeId, |
| | | piTb.name as intakeNum, piTb.lng as intakeLng, piTb.lat as intakeLat, |
| | | mTb.amount as amount |
| | | from rm_intake_amount_day mTb |
| | | left join pr_intake piTb on piTb.id = mTb.intake_id |
| | | <where> |
| | | <if test = "idStart != null"> |
| | | mTb.id <![CDATA[>=]]> #{idStart, javaType=LONG, jdbcType=BIGINT} |
| | | </if> |
| | | <if test = "idEnd != null"> |
| | | and mTb.id <![CDATA[<=]]> #{idEnd, javaType=LONG, jdbcType=BIGINT} |
| | | </if> |
| | | </where> |
| | | order by mTb.amount DESC |
| | | <trim prefix="limit " > |
| | | <if test="count != null"> |
| | | 0, #{count,javaType=Integer, jdbcType=INTEGER} |
| | | </if> |
| | | </trim> |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | </trim> |
| | | </select> |
| | | |
| | | |
| | | <select id="selectStealSome" parameterType="java.util.Map" resultType="com.dy.pipIrrGlobal.voSpecial.VoSteal"> |
| | | select mTb.id as id, mTb.intake_id as intakeId, mTb.client_id as clientId, |
| | | piTb.name as intakeNum, piTb.lng as intakeLng, piTb.lat as intakeLat, |
| | |
| | | </select> |
| | | |
| | | |
| | | |
| | | <select id="selectAbnormalCloseValveTotal" parameterType="java.util.Map" resultType="java.lang.Long"> |
| | | select |
| | | count(*) |
| | |
| | | </trim> |
| | | </select> |
| | | |
| | | <select id="selectAbnormalCloseValveSome" parameterType="java.util.Map" resultType="com.dy.pipIrrGlobal.voSpecial.CoAbnormalCloseValve"> |
| | | |
| | | <select id="selectAbnormalCloseValveSome" parameterType="java.util.Map" resultType="com.dy.pipIrrGlobal.voSpecial.VoAbnormalCloseValve"> |
| | | select mTb.id as id, mTb.intake_id as intakeId, mTb.client_id as clientId, |
| | | piTb.name as intakeNum, piTb.lng as intakeLng, piTb.lat as intakeLat, |
| | | scTb.name as clientName, scTb.clientNum as clientNum, |
| | |
| | | import com.dy.pipIrrGlobal.voLargeScreen.VoBaseInfo; |
| | | import com.dy.pipIrrGlobal.voLargeScreen.VoCurrentInfo; |
| | | import com.dy.pipIrrGlobal.voLargeScreen.VoMonitorInfo; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoTopXClient; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoTopXIntake; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.media.Content; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 昨日农户用水前5名 |
| | | * @return 数据集合 |
| | | */ |
| | | @Operation(summary = "昨日农户用水前5名", description = "昨日农户用水前5名统计") |
| | | @ApiResponses(value = { |
| | | @ApiResponse( |
| | | responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, |
| | | description = "昨日农户用水前5名统计(BaseResponse.content:[VoTopXClient{}])", |
| | | content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, |
| | | schema = @Schema(implementation = VoTopXClient.class))} |
| | | ) |
| | | }) |
| | | @GetMapping(path = "top5ClientYesterday") |
| | | @SsoAop() |
| | | public BaseResponse<List<VoTopXClient>> top5ClientYesterday(){ |
| | | List<VoTopXClient> res = this.sv.top5ClientYesterday(); |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } |
| | | |
| | | /** |
| | | * 昨日取水口用水前5名 |
| | | * @return 数据集合 |
| | | */ |
| | | @Operation(summary = "昨日取水口用水前5名", description = "昨日取水口用水前5名统计") |
| | | @ApiResponses(value = { |
| | | @ApiResponse( |
| | | responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, |
| | | description = "昨日取水口用水前5名统计(BaseResponse.content:[VoTopXIntake{}])", |
| | | content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, |
| | | schema = @Schema(implementation = VoTopXIntake.class))} |
| | | ) |
| | | }) |
| | | @GetMapping(path = "top5IntakeYesterday") |
| | | @SsoAop() |
| | | public BaseResponse<List<VoTopXIntake>> top5IntakeYesterday(){ |
| | | List<VoTopXIntake> res = this.sv.top5IntakeYesterday(); |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | import com.dy.common.mw.protocol.Command; |
| | | import com.dy.common.mw.protocol.CommandBackParam; |
| | | import com.dy.common.util.DateTime; |
| | | import com.dy.common.util.IDLongGenerator; |
| | | import com.dy.common.webUtil.BaseResponse; |
| | | import com.dy.pipIrrGlobal.daoLargeScreen.Ls4StatisticsMapper; |
| | | import com.dy.pipIrrGlobal.rtuMw.CodeLocal; |
| | |
| | | import com.dy.pipIrrGlobal.voLargeScreen.VoBaseInfo; |
| | | import com.dy.pipIrrGlobal.voLargeScreen.VoCurrentInfo; |
| | | import com.dy.pipIrrGlobal.voLargeScreen.VoMonitorInfo; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoTopXClient; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoTopXIntake; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.core.env.Environment; |
| | |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | |
| | | } |
| | | return result ; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 昨日农户用水前5名统计 |
| | | * @return 数据集合 |
| | | */ |
| | | public List<VoTopXClient> top5ClientYesterday() { |
| | | int[] yesterday = DateTime.yyyy_MM_dd_2_ymdGroup(DateTime.lastXDay_yyyy_MM_dd(1)) ; |
| | | Long idStart = IDLongGenerator.generateOneDayStartId(yesterday[0], yesterday[1], yesterday[2]) ; |
| | | Long idEnd = IDLongGenerator.generateOneDayEndId(yesterday[0], yesterday[1], yesterday[2]) ; |
| | | return this.dao.topXClientAtCertainDay(idStart, idEnd, 5) ; |
| | | } |
| | | |
| | | /** |
| | | * 昨日取水口用水前5名统计 |
| | | * @return 数据集合 |
| | | */ |
| | | public List<VoTopXIntake> top5IntakeYesterday() { |
| | | int[] yesterday = DateTime.yyyy_MM_dd_2_ymdGroup(DateTime.lastXDay_yyyy_MM_dd(1)) ; |
| | | Long idStart = IDLongGenerator.generateOneDayStartId(yesterday[0], yesterday[1], yesterday[2]) ; |
| | | Long idEnd = IDLongGenerator.generateOneDayEndId(yesterday[0], yesterday[1], yesterday[2]) ; |
| | | return this.dao.topXIntakeAtCertainDay(idStart, idEnd, 5) ; |
| | | } |
| | | |
| | | } |
| | |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.common.webUtil.QueryResultVo; |
| | | import com.dy.common.webUtil.ResultCodeMsg; |
| | | import com.dy.pipIrrGlobal.voSpecial.CoAbnormalCloseValve; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoAbnormalCloseValve; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoSteal; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.media.Content; |
| | |
| | | |
| | | /** |
| | | * 涉嫌偷水 |
| | | * @return |
| | | * @return 数据集合 |
| | | */ |
| | | @Operation(summary = "涉嫌偷水", description = "涉嫌偷水统计") |
| | | @ApiResponses(value = { |
| | |
| | | |
| | | /** |
| | | * 异常关阀 |
| | | * @return |
| | | * @return 数据集合 |
| | | */ |
| | | @Operation(summary = "异常关阀", description = "异常关阀统计") |
| | | @ApiResponses(value = { |
| | |
| | | responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, |
| | | description = "异常关阀统计(BaseResponse.content:QueryResultVo{[VoSteal{}]})", |
| | | content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, |
| | | schema = @Schema(implementation = CoAbnormalCloseValve.class))} |
| | | schema = @Schema(implementation = VoAbnormalCloseValve.class))} |
| | | ) |
| | | }) |
| | | @GetMapping(path = "abnormalCloseValve") |
| | | @SsoAop() |
| | | public BaseResponse<QueryResultVo<List<CoAbnormalCloseValve>>> abnormalCloseValve(@Valid QoAbnormalCloseValve qo, BindingResult bindingResult) throws Exception { |
| | | public BaseResponse<QueryResultVo<List<VoAbnormalCloseValve>>> abnormalCloseValve(@Valid QoAbnormalCloseValve qo, BindingResult bindingResult) throws Exception { |
| | | if(bindingResult != null && bindingResult.hasErrors()){ |
| | | return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | QueryResultVo<List<CoAbnormalCloseValve>> res = this.sv.abnormalCloseValve(qo); |
| | | QueryResultVo<List<VoAbnormalCloseValve>> res = this.sv.abnormalCloseValve(qo); |
| | | return BaseResponseUtils.buildSuccess(res); |
| | | } |
| | | |
| | |
| | | import com.dy.common.util.DateTime; |
| | | import com.dy.common.webUtil.QueryResultVo; |
| | | import com.dy.pipIrrGlobal.daoSpecial.SpecialMapper; |
| | | import com.dy.pipIrrGlobal.voSpecial.CoAbnormalCloseValve; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoAbnormalCloseValve; |
| | | import com.dy.pipIrrGlobal.voSpecial.VoSteal; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.dubbo.common.utils.PojoUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Optional; |
| | |
| | | |
| | | /** |
| | | * 涉嫌偷水统计 |
| | | * @param qo |
| | | * @return |
| | | * @param qo 查询参数 |
| | | * @return 数据集合 |
| | | */ |
| | | public QueryResultVo<List<VoSteal>> steal(QoSteal qo) throws Exception { |
| | | if(qo.fromDt != null && qo.fromDt != "") { |
| | | if(qo.fromDt != null && !qo.fromDt.trim().equals("")) { |
| | | qo.fromDate = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(qo.fromDt + " 00:00:00") ; |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * 涉嫌偷水统计 |
| | | * @param qo |
| | | * @return |
| | | * 异常关阀统计 |
| | | * @param qo 查询参数 |
| | | * @return 数据集合 |
| | | */ |
| | | public QueryResultVo<List<CoAbnormalCloseValve>> abnormalCloseValve(QoAbnormalCloseValve qo) throws Exception { |
| | | if(qo.atDt != null && qo.atDt != "") { |
| | | public QueryResultVo<List<VoAbnormalCloseValve>> abnormalCloseValve(QoAbnormalCloseValve qo) throws Exception { |
| | | if(qo.atDt != null && !qo.atDt.trim().equals("")) { |
| | | qo.atDateStart = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(qo.atDt + " 00:00:00") ; |
| | | qo.atDateEnd = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(qo.atDt + " 23:59:59") ; |
| | | } |
| | |
| | | |
| | | Long itemTotal = Optional.ofNullable(this.dao.selectAbnormalCloseValveTotal(params)).orElse(0L); |
| | | |
| | | QueryResultVo<List<CoAbnormalCloseValve>> rsVo = new QueryResultVo<>() ; |
| | | QueryResultVo<List<VoAbnormalCloseValve>> rsVo = new QueryResultVo<>() ; |
| | | rsVo.pageSize = qo.pageSize ; |
| | | rsVo.pageCurr = qo.pageCurr ; |
| | | rsVo.calculateAndSet(itemTotal, params); |
| | | |
| | | List<CoAbnormalCloseValve> list = this.dao.selectAbnormalCloseValveSome(params) ; |
| | | List<VoAbnormalCloseValve> list = this.dao.selectAbnormalCloseValveSome(params) ; |
| | | if (list != null && list.size() > 0) { |
| | | for (CoAbnormalCloseValve vo : list) { |
| | | for (VoAbnormalCloseValve vo : list) { |
| | | vo.openType = CommonV1.openCloseValveType(vo.opType) ; |
| | | vo.closeType = CommonV1.openCloseValveType(vo.clType) ; |
| | | } |