liurunyu
2025-02-10 a2d5f396dcee51917d333e42a977a544091e5389
大屏展示--昨日农户用水前5名统计,昨日取水口用水统计前5名统计实现
1 文件已重命名
8个文件已修改
2个文件已添加
305 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSpecial/SpecialMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoAbnormalCloseValve.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXClient.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXIntake.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SpecialMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialCtrl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialSv.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoLargeScreen/Ls4StatisticsMapper.java
@@ -1,10 +1,13 @@
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
@@ -118,4 +121,26 @@
     */
    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) ;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSpecial/SpecialMapper.java
@@ -1,10 +1,9 @@
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;
@@ -42,6 +41,6 @@
     * @param params 查询条件
     * @return 实体集合
     */
    List<CoAbnormalCloseValve> selectAbnormalCloseValveSome(Map<?, ?> params) ;
    List<VoAbnormalCloseValve> selectAbnormalCloseValveSome(Map<?, ?> params) ;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoAbnormalCloseValve.java
File was renamed from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/CoAbnormalCloseValve.java
@@ -30,6 +30,6 @@
        "thisMoney",
        "thisTime"
})
public class CoAbnormalCloseValve extends VoSteal{
public class VoAbnormalCloseValve extends VoSteal{
    private static final long serialVersionUID = 202502081128001L;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXClient.java
New file
@@ -0,0 +1,55 @@
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;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSpecial/VoTopXIntake.java
New file
@@ -0,0 +1,53 @@
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;
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml
@@ -268,4 +268,52 @@
        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>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SpecialMapper.xml
@@ -28,6 +28,7 @@
        </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,
@@ -65,7 +66,6 @@
    </select>
    <select id="selectAbnormalCloseValveTotal" parameterType="java.util.Map" resultType="java.lang.Long">
        select
        count(*)
@@ -92,7 +92,8 @@
        </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,
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsCtrl.java
@@ -8,6 +8,8 @@
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;
@@ -22,6 +24,7 @@
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
/**
 * @Author: liurunyu
@@ -109,4 +112,47 @@
        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);
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/largeScreen/Ls4StatisticsSv.java
@@ -5,6 +5,7 @@
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;
@@ -12,6 +13,8 @@
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;
@@ -19,6 +22,7 @@
import org.springframework.web.client.RestTemplate;
import java.util.Date;
import java.util.List;
/**
 * @Author: liurunyu
@@ -138,4 +142,29 @@
        }
        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) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialCtrl.java
@@ -5,7 +5,7 @@
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;
@@ -47,7 +47,7 @@
    /**
     * 涉嫌偷水
     * @return
     * @return 数据集合
     */
    @Operation(summary = "涉嫌偷水", description = "涉嫌偷水统计")
    @ApiResponses(value = {
@@ -70,7 +70,7 @@
    /**
     * 异常关阀
     * @return
     * @return 数据集合
     */
    @Operation(summary = "异常关阀", description = "异常关阀统计")
    @ApiResponses(value = {
@@ -78,16 +78,16 @@
                    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);
    }
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/special/SpecialSv.java
@@ -4,13 +4,12 @@
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;
@@ -32,11 +31,11 @@
    /**
     * 涉嫌偷水统计
     * @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") ;
        }
@@ -62,12 +61,12 @@
    /**
     * 涉嫌偷水统计
     * @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") ;
        }
@@ -76,14 +75,14 @@
        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) ;
            }