liurunyu
2024-11-13 eb792cd735b2fc820ab227ae94c95bbb5f8250fc
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
6个文件已修改
1个文件已添加
230 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoRtuAndVc.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/issue/IssueCtrl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/issue/IssueSv.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
@@ -352,7 +352,12 @@
            JSONObject job_param = (JSONObject) JSON.toJSON(param);
            JSONObject job_data = job_response.getJSONObject("content").getJSONObject("data");
            if(!job_data.getBoolean("success")) {
                // 开关阀失败
                // 开关阀失败,更新命令执行状态及虚拟卡状态
                rmCommandHistory = new RmCommandHistory();
                rmCommandHistory.setComId(comId);
                rmCommandHistory.setResult((byte) 0);
                rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory);
                // 开阀失败则解除占用,关阀失败则占用
                if (comType != null) {
@@ -375,7 +380,12 @@
                response_CallBack.setMsg(CommandResultCode.OPEN_CLOSE_FAIL.getMessage());
                response_CallBack.setSuccess(false);
            }else {
                // 开关阀成功
                // 开关阀成功,更新命令执行状态及虚拟卡状态
                rmCommandHistory = new RmCommandHistory();
                rmCommandHistory.setComId(comId);
                rmCommandHistory.setResult((byte) 1);
                rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory);
                // 开阀成功则占用,关阀成功不占用
                if (comType != null) {
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
import com.dy.pipIrrGlobal.voRm.VoCommand;
import com.dy.pipIrrGlobal.voRm.VoRtuAndVc;
import com.dy.pipIrrGlobal.voRm.VoUnclosedParam;
import com.dy.pipIrrGlobal.voRm.VoUnclosedValve;
import org.apache.ibatis.annotations.Mapper;
@@ -32,13 +33,39 @@
    int updateByPrimaryKey(RmCommandHistory record);
    /**
     * 根据operator获取未关阀的RTU地址及虚拟卡编号数据对,获取未关阀记录使用
     * @param operator
     * @return
     */
    List<VoRtuAndVc> getUnclosedRtus(Long operator);
    /**
     * 根据RTU地址和虚拟卡编号获取成功开阀的最后一条记录,获取未关阀记录使用
     * @param rtuAddr
     * @param vcNum
     * @return
     */
    Long getLastComId(@Param("rtuAddr")String rtuAddr, @Param("vcNum")String vcNum);
    /**
     * 根据命令日志编号集合获取未关阀记录
     * @param onLineMap
     * @param comIds
     * @return
     */
    List<VoUnclosedValve> getUnclosedValves(@Param("onLineMap") String onLineMap, @Param("comIds") String comIds);
    /**
     * 根据操作员ID获取未关阀记录(包含在线情况)
     * @param onLineMap
     * @param operator
     * @return
     */
    List<VoUnclosedValve> getUnclosedValves(@Param("onLineMap") String onLineMap, @Param("operator") Long operator);
    List<VoUnclosedValve> getUnclosedValves2(@Param("onLineMap") String onLineMap, @Param("operator") Long operator);
    /**
     * 根据取水口ID获取该取水口未关阀参数,平台选择取水口关阀使用
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoRtuAndVc.java
New file
@@ -0,0 +1,28 @@
package com.dy.pipIrrGlobal.voRm;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Data;
/**
 * @author ZhuBaoMin
 * @date 2024-11-13 15:44
 * @LastEditTime 2024-11-13 15:44
 * @Description RTU地址及虚拟卡编号视图对象,获取未关阀记录使用
 */
@Data
@JsonPropertyOrder({"rtuAddr", "vcNum"})
public class VoRtuAndVc implements BaseEntity {
    private static final long serialVersionUID = 202411131548001L;
    /**
     * 阀控器地址
     */
    private String rtuAddr;
    /**
     * 虚拟卡编号
     */
    private String vcNum;
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
@@ -195,8 +195,110 @@
        where com_id = #{comId,jdbcType=BIGINT}
    </update>
    <!--根据操作员ID获取未关阀记录(包含在线情况)-->
    <!--根据operator获取未关阀的RTU地址及虚拟卡编号数据对,获取未关阀记录使用-->
    <select id="getUnclosedRtus" resultType="com.dy.pipIrrGlobal.voRm.VoRtuAndVc">
        SELECT
            com.rtu_addr AS rtuAddr,
            com.param ->> '$.icCardNo' AS vcNum
        FROM rm_command_history com
        where 1=1
          AND com.operator = #{operator}
          AND com.result = 1
          AND ((com.protocol = 'p206V1' OR com.protocol = 'p206V2') AND (com.command_code = '92' OR com.command_code = '97' OR com.command_code = '99' OR com.command_code = 'A0' OR com.command_code = 'A1' OR com.command_code = 'A2'))
          AND (
            SELECT op_dt FROM rm_open_close_valve_last
            WHERE rtu_addr = com.rtu_addr AND op_ic_card_no = com.param ->> '$.icCardNo'
            ORDER BY op_dt DESC
            LIMIT 1
        ) IS NOT NULL
          AND (
            SELECT cl_dt FROM rm_open_close_valve_last
            WHERE rtu_addr = com.rtu_addr AND op_ic_card_no = com.param ->> '$.icCardNo'
            ORDER BY op_dt DESC
            LIMIT 1
        ) IS NULL
        GROUP BY com.rtu_addr, com.param ->> '$.icCardNo'
    </select>
    <!--根据RTU地址和虚拟卡编号获取成功开阀的最后一条记录,获取未关阀记录使用-->
    <select id="getLastComId" resultType="java.lang.Long">
        SELECT com_id AS comId
        FROM rm_command_history
        WHERE result = 1
            AND ((protocol = 'p206V1' OR protocol = 'p206V2')
            AND (command_code = '92' OR command_code = '97' OR command_code = '99' OR command_code = 'A0' OR command_code = 'A1' OR command_code = 'A2'))
            AND rtu_addr = #{rtuAddr} AND param ->> '$.icCardNo' = #{vcNum}
        ORDER BY send_time DESC
        LIMIT 1
    </select>
    <select id="getUnclosedValves" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve">
        SELECT
            inta.name AS intakeNum,
            IFNULL(rtus.isOnLine, false) AS isOnLine,
            com.rtu_addr AS rtuAddr,
            com.param ->> '$.icCardNo' AS vcNum,
            (
                SELECT param ->> '$.orderNo' AS orderNo
                FROM rm_command_history
                WHERE rtu_addr = com.rtu_addr
                ORDER BY send_time desc
                LIMIT 0,1
            ) AS orderNo,
            'toClose'                  AS state,
            CASE
                WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 1
                ELSE 0
            END AS planned,
            com.send_time AS sendTime,
            (SELECT dt FROM rm_work_report_last
                WHERE rtu_addr = com.rtu_addr AND ic_card_no = com.param ->> '$.icCardNo'
                    AND dt > com.send_time
                ORDER BY dt DESC
             LIMIT 1) AS dt,
            (SELECT water_instant FROM rm_work_report_last
                WHERE rtu_addr = com.rtu_addr AND ic_card_no = com.param ->> '$.icCardNo'
                    AND dt > com.send_time
                ORDER BY dt DESC
            LIMIT 1) AS waterInstant
        FROM rm_command_history com
            INNER JOIN pr_controller con ON com.rtu_addr = con.rtuAddr
            INNER JOIN pr_intake inta ON con.intakeId = inta.id
            LEFT JOIN JSON_TABLE(
                <!--'[{"rtuAddr":"620201000030","isOnLine":true}]',-->
                #{onLineMap},
                '$[*]' COLUMNS (
                    rtuAddr VARCHAR(20) PATH '$.rtuAddr',
                    isOnLine BOOLEAN PATH '$.isOnLine'
                )
            ) rtus ON com.rtu_addr = rtus.rtuAddr
        <where>
            AND com.com_id in #{comIds}
            AND (
                SELECT op_dt FROM rm_open_close_valve_last
                WHERE rtu_addr = com.rtu_addr AND op_ic_card_no = com.param ->> '$.icCardNo'
                ORDER BY op_dt DESC
                LIMIT 1
            ) IS NOT NULL
            AND (
                SELECT cl_dt FROM rm_open_close_valve_last
                WHERE rtu_addr = com.rtu_addr AND op_ic_card_no = com.param ->> '$.icCardNo'
                ORDER BY op_dt DESC
                LIMIT 1
            ) IS NULL
        </where>
        GROUP BY inta.name, rtus.isOnLine, com.rtu_addr, com.param ->> '$.icCardNo', com.command_code, com.send_time, dt, waterInstant
        ORDER BY com.send_time DESC
    </select>
    <!--根据操作员ID获取未关阀记录(包含在线情况)-->
    <select id="getUnclosedValves2" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve">
        SELECT
            inta.name AS intakeNum,
            IFNULL(rtus.isOnLine, false) AS isOnLine,
@@ -243,6 +345,7 @@
            ) rtus ON com.rtu_addr = rtus.rtuAddr
        <where>
            AND com.operator = #{operator}
            AND com.result = 1
            AND ((com.protocol = 'p206V1' OR com.protocol = 'p206V2') AND (com.command_code = '92' OR com.command_code = '97' OR com.command_code = '99' OR com.command_code = 'A0' OR com.command_code = 'A1' OR com.command_code = 'A2'))
            AND (
                SELECT op_dt FROM rm_open_close_valve_last
pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/issue/IssueCtrl.java
@@ -7,6 +7,7 @@
import com.dy.pipIrrApp.issue.dto.DtoDeleteParam;
import com.dy.pipIrrApp.issue.qo.QoIssueReport;
import com.dy.pipIrrGlobal.pojoOp.OpeIssueReport;
import com.dy.pipIrrGlobal.pojoOp.OpeReportReply;
import com.dy.pipIrrGlobal.voOp.VoIssueReport;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
@@ -92,4 +93,26 @@
    }
    /**
     * 回复巡检员问题上报
     * @param po
     * @param bindingResult
     * @return
     */
    @PostMapping(path = "replyReport")
    @Transactional(rollbackFor = Exception.class)
    public BaseResponse<Boolean> replyReport(@RequestBody @Valid OpeReportReply po, BindingResult bindingResult) {
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        String result = issueSv.replyReport(po);
        if(!result.equals("sucess")) {
            return BaseResponseUtils.buildErrorMsg(result);
        }
        return BaseResponseUtils.buildSuccess() ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-app/src/main/java/com/dy/pipIrrApp/issue/IssueSv.java
@@ -114,6 +114,13 @@
            return "回复记录添加失败";
        }
        OpeIssueReport issueReport = new OpeIssueReport();
        issueReport.setId(po.getReportId());
        issueReport.setState((byte)2);
        Integer rec = opeIssueReportMapper.updateByPrimaryKeySelective(issueReport);
        if(rec == 0) {
            return "巡检员问题上报状态修改失败";
        }
        return "sucess";
    }
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
@@ -18,6 +18,7 @@
import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory;
import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
import com.dy.pipIrrGlobal.voRm.VoIrrigaterProfile;
import com.dy.pipIrrGlobal.voRm.VoRtuAndVc;
import com.dy.pipIrrGlobal.voRm.VoUnclosedValve;
import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
import lombok.RequiredArgsConstructor;
@@ -116,13 +117,30 @@
            System.out.println(jsonArray.toJSONString());
        }
        List<VoUnclosedValve> res = rmCommandHistoryMapper.getUnclosedValves(jsonArray.toJSONString(), operator);
        /**
         * 获取未关阀的RTU地址和虚拟卡编号对数组
         * 遍历数组获取最后命令日志ID集合
         */
        List<VoRtuAndVc> rtus = rmCommandHistoryMapper.getUnclosedRtus(operator);
        String comIds = "";
        if(rtus != null && rtus.size() > 0) {
            for (int i = 0; i < rtus.size(); i++) {
                Long comId = rmCommandHistoryMapper.getLastComId(rtus.get(i).getRtuAddr(), rtus.get(i).getVcNum());
                if(comId > 0) {
                    comIds = comIds + comId + ",";
                }
            }
        }
        if(comIds.length() > 0) {
            comIds = "(" + comIds.substring(0,comIds.length()) + ")";
            List<VoUnclosedValve> res = rmCommandHistoryMapper.getUnclosedValves(jsonArray.toJSONString(), comIds);
        if(res != null) {
            return res;
        } else {
            return new ArrayList<>();
        }
    }
        return new ArrayList<>();
    }
    /**
     * 为指定(阀控器地址、水卡编号、无关阀记录)开关阀最新记录添加关阀时间,使之不在未关阀记录中显示