wuzeyu
2024-08-06 f0578816cd039cc16ec223d2b4e9383dde22cb3c
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
9个文件已修改
4个文件已添加
581 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/CloseTypeQo.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/OpenTypeQO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/qo/SignalIntensityQO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
@@ -178,8 +178,8 @@
     * 10:开关阀卡关阀;
     * 11:开关阀卡刷卡卡开阀;
     * 12:黑名单命令关阀;
     * 13:用户远程定时关阀;
     * 14:用户远程定量关阀;
     * 13:远程定时关阀;
     * 14:远程定量关阀;
     * )
     * @param type 字节
     * @return 名称
@@ -198,8 +198,8 @@
            case 10 -> "开关阀卡关阀";
            case 11 -> "开关阀卡开阀";
            case 12 -> "黑名单命令关阀";
            case 13 -> "用户远程定时关阀";
            case 14 -> "用户远程定量关阀";
            case 13 -> "远程定时关阀";
            case 14 -> "远程定量关阀";
            default -> "未知";
        };
    }
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOnHourReportLastMapper.java
@@ -138,4 +138,5 @@
     * @return
     */
    List<VoSignalIntensity> getSpecifiedSignalIntakes(Map<?, ?> params);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
@@ -84,4 +84,18 @@
     * @return
     */
    List<VoOpenCloseValve> getOpenCloseValveReports_last(Map<?, ?> params);
    /**
     * 根据开阀类型获取操作次数
     * @param params
     * @return
     */
    Integer getCountByOpenType(Map<?, ?> params);
    /**
     * 根据关阀类型获取操作次数
     * @param params
     * @return
     */
    Integer getCountByCloseType(Map<?, ?> params);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfCloseType.java
New file
@@ -0,0 +1,24 @@
package com.dy.pipIrrGlobal.voSt;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-05 16:11
 * @LastEditTime 2024-08-05 16:11
 * @Description 关阀类型次数统计视图
 */
@Data
public class VoCountOfCloseType {
    /**
     * 关阀类型名称
     */
    private String closeTypeName;
    /**
     * 关阀类型次数
     */
    private Integer closeTypeCount;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoCountOfOpenType.java
New file
@@ -0,0 +1,24 @@
package com.dy.pipIrrGlobal.voSt;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-05 16:03
 * @LastEditTime 2024-08-05 16:03
 * @Description 开阀类型次数统计视图
 */
@Data
public class VoCountOfOpenType {
    /**
     * 开阀方类型名称
     */
    private String openTypeName;
    /**
     * 开阀类型次数
     */
    private Integer openTypeCount;
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOnHourReportLastMapper.xml
@@ -417,4 +417,5 @@
            </if>
        </trim>
    </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -38,12 +38,37 @@
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, client_id, client_name,
    controller_id, intake_id, rtu_addr, op_dt, op_type, op_total_amount, op_ic_card_no,
    op_ic_card_addr, op_remain_money, open_dt, op_order_no, op_ele_total_amount, op_water_remain_user,
    cl_dt, cl_type, cl_total_amount, cl_ic_card_no, cl_ic_card_addr, cl_remain_money,
    cl_this_amount, cl_this_money, cl_this_time, cl_open_dt, close_dt, cl_order_no, cl_ele_total_amount,
    cl_water_remain_user, cl_this_ele
        id,
        client_id,
        client_name,
        controller_id,
        intake_id,
        rtu_addr,
        op_dt,
        op_type,
        op_total_amount,
        op_ic_card_no,
        op_ic_card_addr,
        op_remain_money,
        open_dt,
        op_order_no,
        op_ele_total_amount,
        op_water_remain_user,
        cl_dt,
        cl_type,
        cl_total_amount,
        cl_ic_card_no,
        cl_ic_card_addr,
        cl_remain_money,
        cl_this_amount,
        cl_this_money,
        cl_this_time,
        cl_open_dt,
        close_dt,
        cl_order_no,
        cl_ele_total_amount,
        cl_water_remain_user,
        cl_this_ele
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -54,7 +79,8 @@
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_open_close_valve_history
        delete
        from rm_open_close_valve_history
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
@@ -433,9 +459,101 @@
      </if>
    </where>
  </select>
    <!--根据指定条件获取开关阀报历史记录数量-->
    <select id="getOpenCloseValveReportsCount_history" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history oh
                 INNER JOIN pr_intake inta ON inta.id = oh.intake_id
        <where>
            <if test="intakeId != null and intakeId > 0">
                AND oh.intake_id = #{intakeId}
            </if>
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
            </if>
            <if test="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
            </if>
            <if test="timeStart_open != null and timeStop_open != null">
                AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
            </if>
            <if test="timeStart_close != null and timeStop_close != null">
                AND oh.cl_dt BETWEEN #{timeStart_close} AND #{timeStop_close}
            </if>
        </where>
    </select>
  <!--根据指定条件获取开关阀报历史记录-->
  <select id="getOpenCloseValveReports_history" resultType="com.dy.pipIrrGlobal.voRm.VoOpenCloseValve">
        SELECT oh.intake_id            AS intakeId,
               inta.name               AS intakenum,
               oh.rtu_addr             AS rtuAddr,
               oh.client_name          AS clientName,
               oh.op_ic_card_no        AS openIcNum,
               oh.op_ic_card_addr      AS openIcAddr,
               oh.op_dt                AS openTime,
               CASE
                   WHEN oh.op_type = 1 THEN '刷卡开阀'
                   WHEN oh.op_type = 3 THEN '中心站开阀'
                   WHEN oh.op_type = 5 THEN '欠费关阀'
                   WHEN oh.op_type = 8 THEN '用户远程开阀'
                   WHEN oh.op_type = 11 THEN '开关阀卡开阀'
                   ELSE '未知'
                   END                 AS openType,
               oh.op_order_no          AS openOrderNo,
               oh.op_total_amount      AS openTotalAmount,
               oh.op_remain_money      AS openRemainMoney,
               oh.op_water_remain_user AS openWaterRemain,
               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,
               CASE
                   WHEN oh.cl_type = 2 THEN '刷卡关阀'
                   WHEN oh.cl_type = 4 THEN '中心站关阀'
                   WHEN oh.cl_type = 5 THEN '欠费关阀'
                   WHEN oh.cl_type = 6 THEN '流量计故障关阀'
                   WHEN oh.cl_type = 7 THEN '紧急关阀'
                   WHEN oh.cl_type = 9 THEN '用户远程关阀'
                   WHEN oh.cl_type = 10 THEN '开关阀卡关阀'
                   WHEN oh.cl_type = 12 THEN '黑名单命令关阀'
                   WHEN oh.cl_type = 13 THEN '远程定时关阀'
                   WHEN oh.cl_type = 14 THEN '远程定量关阀'
                   ELSE '未知'
                   END                 AS closeType,
               oh.cl_this_amount       AS closeThisAmount,
               oh.cl_this_time         AS thisTime,
               oh.cl_this_money        AS thisMoney,
               oh.cl_remain_money      AS closeRemainMoney,
               oh.cl_total_amount      AS closeTotalAmount
        FROM rm_open_close_valve_history oh
                 INNER JOIN pr_intake inta ON inta.id = oh.intake_id
        <where>
            <if test="intakeId != null and intakeId > 0">
                AND oh.intake_id = #{intakeId}
            </if>
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
            </if>
            <if test="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
            </if>
            <if test="timeStart_open != null and timeStop_open != null">
                AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
            </if>
            <if test="timeStart_close != null and timeStop_close != null">
                AND oh.cl_dt BETWEEN #{timeStart_close} AND #{timeStop_close}
            </if>
        </where>
        ORDER BY oh.op_dt DESC
        <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="getOpenCloseValveReports_history" resultType="com.dy.pipIrrGlobal.voRm.VoOpenCloseValve">
    SELECT
      oh.intake_id AS intakeId,
      inta.name AS intakenum,
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
@@ -39,12 +39,38 @@
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, last_history_id, client_id, client_name,
    controller_id, intake_id, rtu_addr, op_dt, op_type, op_total_amount,
    op_ic_card_no, op_ic_card_addr, op_remain_money, open_dt, op_order_no, op_ele_total_amount,
    op_water_remain_user, cl_dt, cl_type, cl_total_amount, cl_ic_card_no, cl_ic_card_addr,
    cl_remain_money, cl_this_amount, cl_this_money, cl_this_time, cl_open_dt, close_dt,
    cl_order_no, cl_ele_total_amount, cl_water_remain_user, cl_this_ele
        id,
        last_history_id,
        client_id,
        client_name,
        controller_id,
        intake_id,
        rtu_addr,
        op_dt,
        op_type,
        op_total_amount,
        op_ic_card_no,
        op_ic_card_addr,
        op_remain_money,
        open_dt,
        op_order_no,
        op_ele_total_amount,
        op_water_remain_user,
        cl_dt,
        cl_type,
        cl_total_amount,
        cl_ic_card_no,
        cl_ic_card_addr,
        cl_remain_money,
        cl_this_amount,
        cl_this_money,
        cl_this_time,
        cl_open_dt,
        close_dt,
        cl_order_no,
        cl_ele_total_amount,
        cl_water_remain_user,
        cl_this_ele
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -62,7 +88,8 @@
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_open_close_valve_last
        delete
        from rm_open_close_valve_last
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
@@ -77,8 +104,7 @@
      cl_ic_card_no, cl_ic_card_addr, cl_remain_money, 
      cl_this_amount, cl_this_money, cl_this_time, 
      cl_open_dt, close_dt, cl_order_no, 
      cl_ele_total_amount, cl_water_remain_user, cl_this_ele
      )
                                              cl_ele_total_amount, cl_water_remain_user, cl_this_ele)
    values (#{id,jdbcType=BIGINT}, #{lastHistoryId,jdbcType=BIGINT},
      #{clientId,jdbcType=BIGINT}, #{clientName,jdbcType=VARCHAR}, #{controllerId,jdbcType=BIGINT},
      #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{opDt,jdbcType=TIMESTAMP}, 
@@ -89,8 +115,7 @@
      #{clIcCardNo,jdbcType=VARCHAR}, #{clIcCardAddr,jdbcType=VARCHAR}, #{clRemainMoney,jdbcType=DOUBLE}, 
      #{clThisAmount,jdbcType=DOUBLE}, #{clThisMoney,jdbcType=DOUBLE}, #{clThisTime,jdbcType=INTEGER}, 
      #{clOpenDt,jdbcType=TIMESTAMP}, #{closeDt,jdbcType=TIMESTAMP}, #{clOrderNo,jdbcType=VARCHAR}, 
      #{clEleTotalAmount,jdbcType=FLOAT}, #{clWaterRemainUser,jdbcType=FLOAT}, #{clThisEle,jdbcType=FLOAT}
      )
                #{clEleTotalAmount,jdbcType=FLOAT}, #{clWaterRemainUser,jdbcType=FLOAT}, #{clThisEle,jdbcType=FLOAT})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
    <!--@mbg.generated-->
@@ -524,4 +549,98 @@
      </if>
    </trim>
  </select>
    <!--根据指定条件获取开关阀报最新记录-->
    <select id="getOpenCloseValveReports_last" resultType="com.dy.pipIrrGlobal.voRm.VoOpenCloseValve">
        SELECT oh.intake_id            AS intakeId,
               inta.name               AS intakeNum,
               oh.rtu_addr             AS rtuAddr,
               oh.client_name          AS clientName,
               oh.op_ic_card_no        AS openIcNum,
               oh.op_ic_card_addr      AS openIcAddr,
               oh.op_dt                AS openTime,
               CASE
                   WHEN oh.op_type = 1 THEN '刷卡开阀'
                   WHEN oh.op_type = 3 THEN '中心站开阀'
                   WHEN oh.op_type = 5 THEN '欠费关阀'
                   WHEN oh.op_type = 8 THEN '用户远程开阀'
                   WHEN oh.op_type = 11 THEN '开关阀卡开阀'
                   ELSE '未知'
                   END                 AS openType,
               oh.op_order_no          AS openOrderNo,
               oh.op_total_amount      AS openTotalAmount,
               oh.op_remain_money      AS openRemainMoney,
               oh.op_water_remain_user AS openWaterRemain,
               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,
               CASE
                   WHEN oh.cl_type = 2 THEN '刷卡关阀'
                   WHEN oh.cl_type = 4 THEN '中心站关阀'
                   WHEN oh.cl_type = 5 THEN '欠费关阀'
                   WHEN oh.cl_type = 6 THEN '流量计故障关阀'
                   WHEN oh.cl_type = 7 THEN '紧急关阀'
                   WHEN oh.cl_type = 9 THEN '用户远程关阀'
                   WHEN oh.cl_type = 10 THEN '开关阀卡关阀'
                   WHEN oh.cl_type = 12 THEN '黑名单命令关阀'
                   WHEN oh.cl_type = 13 THEN '远程定时关阀'
                   WHEN oh.cl_type = 14 THEN '远程定量关阀'
                   ELSE '未知'
                   END                 AS closeType,
               oh.cl_this_amount       AS closeThisAmount,
               oh.cl_this_time         AS thisTime,
               oh.cl_this_money        AS thisMoney,
               oh.cl_remain_money      AS closeRemainMoney,
               oh.cl_total_amount      AS closeTotalAmount
        FROM rm_open_close_valve_last oh
                 INNER JOIN pr_intake inta ON inta.id = oh.intake_id
        <where>
            <if test="intakeId != null and intakeId > 0">
                AND oh.intake_id = #{intakeId}
            </if>
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
            </if>
            <if test="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
            </if>
            <if test="timeStart_open != null and timeStop_open != null">
                AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open}
            </if>
            <if test="timeStart_close != null and timeStop_close != null">
                AND oh.cl_dt BETWEEN #{timeStart_close} AND #{timeStop_close}
            </if>
        </where>
        ORDER BY oh.op_dt DESC
        <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="getCountByOpenType" resultType="java.lang.Integer">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history
        <where>
            AND op_type = #{openType}
            <if test="timeStart != null and timeStop != null">
                AND op_dt BETWEEN #{timeStart} AND #{timeStop}
            </if>
        </where>
    </select>
    <!--根据关阀方式获取操作次数-->
    <select id="getCountByCloseType" resultType="java.lang.Integer">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history
        <where>
            AND cl_type = #{closeType}
            <if test="timeStart != null and timeStop != null">
                AND cl_dt BETWEEN #{timeStart} AND #{timeStop}
            </if>
        </where>
    </select>
</mapper>
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntakeSv.java
@@ -4,6 +4,9 @@
import com.dy.pipIrrGlobal.daoRm.RmOnHourReportHistoryMapper;
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
import com.dy.pipIrrGlobal.daoRm.RmOnHourReportLastMapper;
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveLastMapper;
import com.dy.pipIrrGlobal.voSt.*;
import com.dy.pipIrrStatistics.intake.qo.*;
import com.dy.pipIrrGlobal.voSt.VoBatteryVolt;
import com.dy.pipIrrGlobal.voSt.VoCumulativeFlow;
import com.dy.pipIrrGlobal.voSt.VoIntake;
@@ -42,6 +45,9 @@
    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
    @Autowired
    private RmOnHourReportLastMapper rmOnHourReportLastMapper;
    @Autowired
    private RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper;
    @Value("${rtu.batteryVolt}")
    private Double batteryVolt;
@@ -296,4 +302,124 @@
        return rsVo ;
    }
    /**
     * 根据开阀类型获取操作次数
     * @param qo
     * @return
     */
    public VoCountOfOpenType getCountByOpenType(OpenTypeQO 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);
        Integer openType = qo.getOpenType();
        String openTypeName = "";
        switch (openType) {
            case 1:
                openTypeName = "刷卡开阀";
                break;
            case 3:
                openTypeName = "中心站开阀";
                break;
            case 8:
                openTypeName = "用户远程开阀";
                break;
            case 11:
                openTypeName = "开关阀卡开阀";
                break;
            case 13:
                openTypeName = "开关阀卡开阀";
                break;
        }
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        Integer openTypeCount = Optional.ofNullable(rmOpenCloseValveLastMapper.getCountByOpenType(params)).orElse(0);
        VoCountOfOpenType vo = new VoCountOfOpenType();
        vo.setOpenTypeName(openTypeName);
        vo.setOpenTypeCount(openTypeCount);
        return vo;
    }
    /**
     * 根据关阀类型获取操作次数
     * @param qo
     * @return
     */
    public VoCountOfCloseType getCountByCloseType(CloseTypeQo 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);
        Integer closeType = qo.getCloseType();
        String closeTypeName = "";
        switch (closeType) {
            case 2:
                closeTypeName = "刷卡关阀";
                break;
            case 4:
                closeTypeName = "中心站关阀";
                break;
            case 5:
                closeTypeName = "欠费关阀";
                break;
            case 6:
                closeTypeName = "流量计故障关阀";
                break;
            case 7:
                closeTypeName = "紧急关阀";
                break;
            case 9:
                closeTypeName = "用户远程关阀";
                break;
            case 10:
                closeTypeName = "开关阀卡关阀";
                break;
            case 12:
                closeTypeName = "黑名单命令关阀";
                break;
            case 13:
                closeTypeName = "远程定时关阀";
                break;
            case 14:
                closeTypeName = "远程定量关阀";
                break;
        }
        // 生成查询参数
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
        Integer closeTypeCount = Optional.ofNullable(rmOpenCloseValveLastMapper.getCountByCloseType(params)).orElse(0);
        VoCountOfCloseType vo = new VoCountOfCloseType();
        vo.setCloseTypeName(closeTypeName);
        vo.setCloseTypeCount(closeTypeCount);
        return vo;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/intake/IntkeCtrl.java
@@ -4,6 +4,8 @@
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.voSt.*;
import com.dy.pipIrrStatistics.intake.qo.*;
import com.dy.pipIrrGlobal.voSt.VoBatteryVolt;
import com.dy.pipIrrGlobal.voSt.VoCumulativeFlow;
import com.dy.pipIrrGlobal.voSt.VoIntake;
@@ -117,6 +119,38 @@
        }
    }
    /**
     * 根据开阀类型获取操作次数
     * @param qo
     * @return
     */
    @GetMapping(path = "/getCountByOpenType")
    @SsoAop()
    public BaseResponse<QueryResultVo<VoCountOfOpenType>> getCountByOpenType(OpenTypeQO qo) {
        try {
            return BaseResponseUtils.buildSuccess(intakeSv.getCountByOpenType(qo));
        } catch (Exception e) {
            log.error("获取开卡记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
    /**
     * 根据关阀类型获取操作次数
     * @param qo
     * @return
     */
    @GetMapping(path = "/getCountByCloseType")
    @SsoAop()
    public BaseResponse<QueryResultVo<VoCountOfCloseType>> getCountByCloseType(CloseTypeQo qo) {
        try {
            return BaseResponseUtils.buildSuccess(intakeSv.getCountByCloseType(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/intake/qo/CloseTypeQo.java
New file
@@ -0,0 +1,35 @@
package com.dy.pipIrrStatistics.intake.qo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-05 16:22
 * @LastEditTime 2024-08-05 16:22
 * @Description 关阀类型查询对象
 */
@Data
public class CloseTypeQo {
    /**
     * 关阀类型
     */
    @NotNull(message = "关阀类型不能为空")
    private Integer closeType;
    /**
     * 开始时间
     */
    @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/intake/qo/OpenTypeQO.java
New file
@@ -0,0 +1,35 @@
package com.dy.pipIrrStatistics.intake.qo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-08-05 16:19
 * @LastEditTime 2024-08-05 16:19
 * @Description 开阀类型查询对象
 */
@Data
public class OpenTypeQO {
    /**
     * 开阀类型
     */
    @NotNull(message = "开阀类型不能为空")
    private Integer openType;
    /**
     * 开始时间
     */
    @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/intake/qo/SignalIntensityQO.java
@@ -1,6 +1,9 @@
package com.dy.pipIrrStatistics.intake.qo;
import com.dy.common.webUtil.QueryConditionVo;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
@@ -16,6 +19,9 @@
    /**
     * 信号强度:1-弱,2-一般,3-强
     */
    @NotNull(message = "信号强度不能为空")
    @Min(value = 1, message = "信号强度选择错误")
    @Max(value = 3, message = "信号强度选择错误")
    private Integer signalIntensity;
    /**