Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
| | |
| | | import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast; |
| | | import com.dy.pipIrrGlobal.voRm.VoOpenCloseValve; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | * @return |
| | | */ |
| | | Integer getCountByCloseType(Map<?, ?> params); |
| | | |
| | | /** |
| | | * 为指定(阀控器地址、水卡编号、无关阀记录)开关阀最新记录添加关阀时间,使之不在未关阀记录中显示 |
| | | * @param rtuAddr |
| | | * @param icCardNo |
| | | * @return |
| | | */ |
| | | Integer addCloseTime(@Param("rtuAddr") String rtuAddr, @Param("icCardNo")String icCardNo); |
| | | } |
| | |
| | | package com.dy.pipIrrGlobal.voRm; |
| | | |
| | | import com.dy.common.po.BaseEntity; |
| | | import com.fasterxml.jackson.annotation.JsonPropertyOrder; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | |
| | | */ |
| | | |
| | | @Data |
| | | @JsonPropertyOrder({"intakeNum", "isOnLine", "rtuAddr", "vcNum", "orderNo", "state", "planned"}) |
| | | public class VoUnclosedValve implements BaseEntity { |
| | | private static final long serialVersionUID = 202405241634001L; |
| | | |
| | | //private String commandCode; |
| | | |
| | | /** |
| | | * 取水口编号 |
| | | */ |
| | | private String intakeNum; |
| | | |
| | | /** |
| | | * 是否在线 |
| | | */ |
| | | private Boolean isOnLine; |
| | | |
| | | /** |
| | | * 阀控器地址 |
| | | */ |
| | | private String rtuAddr; |
| | | |
| | | /** |
| | | * 虚拟卡编号 |
| | | */ |
| | | private String vcNum; |
| | | |
| | | /** |
| | | * 订单号 |
| | | */ |
| | | private String orderNo; |
| | | |
| | | /** |
| | | * 状态 |
| | | */ |
| | | private String state; |
| | | |
| | | /** |
| | | * 是否计划性开阀 |
| | | */ |
| | | private Boolean planned; |
| | | |
| | | //private Date openTime; |
| | | } |
| | |
| | | |
| | | <!--根据操作员ID获取未关阀记录(包含在线情况)--> |
| | | <select id="getUnclosedValves" resultType="com.dy.pipIrrGlobal.voRm.VoUnclosedValve"> |
| | | SELECT inta.name AS intakeNum, |
| | | rtus.isOnLine, |
| | | com.rtu_addr AS rtuAddr, |
| | | com.param ->> '$.icCardNo' AS vcNum, |
| | | (SELECT param ->> '$.orderNo' AS orderNo |
| | | SELECT |
| | | inta.name AS intakeNum, |
| | | rtus.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 |
| | | LIMIT 0,1 |
| | | ) AS orderNo, |
| | | 'toClose' AS state, |
| | | CASE |
| | | WHEN com.command_code = 'A1' OR com.command_code = 'A2' THEN 0 |
| | | ELSE 0 |
| | | END AS planned, |
| | | com.send_time AS sendTime |
| | | 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 |
| | | INNER JOIN JSON_TABLE( |
| | | <!--'[{"rtuAddr":"37142501020100215","isOnLine":true},{"rtuAddr":"4000004","isOnLine":true},{"rtuAddr":"dy20240325","isOnLine":false}]',--> |
| | | #{onLineMap}, |
| | | '$[*]' COLUMNS ( |
| | | rtuAddr VARCHAR(20) PATH '$.rtuAddr', |
| | | isOnLine BOOLEAN PATH '$.isOnLine' |
| | | ) |
| | | ) rtus ON com.rtu_addr = rtus.rtuAddr |
| | | <where> |
| | | AND (com.command_code = '92' OR com.command_code = 'A2' OR com.command_code = '97') |
| | | AND com.operator = #{operator} |
| | | AND NOT EXISTS( |
| | | SELECT * |
| | | FROM rm_command_history |
| | | WHERE (result IS NULL OR result = 1) |
| | | AND (command_code = '93' OR command_code = 'A3' OR command_code = '98') |
| | | AND param ->> '$.orderNo' = com.param ->> '$.orderNo' |
| | | ) |
| | | </where> |
| | | GROUP BY inta.name, rtus.isOnLine, com.rtu_addr, com.param ->> '$.icCardNo' |
| | | |
| | | UNION ALL |
| | | |
| | | SELECT inta.name AS intakeNum, |
| | | rtus.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, |
| | | 'toCancel' AS state |
| | | FROM rm_command_history com |
| | | INNER JOIN pr_intake inta ON inta.id = com.intake_id |
| | | INNER JOIN JSON_TABLE( |
| | | LEFT JOIN JSON_TABLE( |
| | | <!-- '[{"rtuAddr":"620201000030","isOnLine":true}]',--> |
| | | #{onLineMap}, |
| | | '$[*]' COLUMNS ( |
| | | rtuAddr VARCHAR(20) PATH '$.rtuAddr', |
| | |
| | | ) |
| | | ) rtus ON com.rtu_addr = rtus.rtuAddr |
| | | <where> |
| | | AND (command_code = 'A1' OR command_code = 'A2') |
| | | AND com.operator = #{operator} |
| | | AND DATE_FORMAT( |
| | | CONCAT(com.param ->> '$.year', '-', com.param ->> '$.month', '-', com.param ->> '$.day', |
| | | ' ', |
| | | com.param ->> '$.hour', ':', com.param ->> '$.minute', ':', '0'), |
| | | '%Y-%m-%d %H:%i:%S') > NOW() |
| | | AND (com.protocol = 'p206V1_0_1' 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 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 |
| | | ORDER BY com.send_time DESC |
| | | LIMIT 1 |
| | | </select> |
| | | |
| | | <!--根据取水口ID获取该取水口未关阀参数--> |
| | |
| | | AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%') |
| | | </if> |
| | | <if test="timeStart_open != null and timeStart_open != '' and timeStop_open != null and timeStop_open != ''"> |
| | | AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open} |
| | | AND oh.open_dt BETWEEN #{timeStart_open} AND #{timeStop_open} |
| | | </if> |
| | | <if test="timeStart_close != null and timeStart_close != '' and timeStop_close != null and timeStop_close != ''"> |
| | | AND oh.cl_dt BETWEEN #{timeStart_close} AND #{timeStop_close} |
| | | AND oh.close_dt BETWEEN #{timeStart_close} AND #{timeStop_close} |
| | | </if> |
| | | </where> |
| | | </select> |
| | |
| | | AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%') |
| | | </if> |
| | | <if test="timeStart_open != null and timeStart_open != '' and timeStop_open != null and timeStop_open != ''"> |
| | | AND oh.op_dt BETWEEN #{timeStart_open} AND #{timeStop_open} |
| | | AND oh.open_dt BETWEEN #{timeStart_open} AND #{timeStop_open} |
| | | </if> |
| | | <if test="timeStart_close != null and timeStart_close != '' and timeStop_close != null and timeStop_close != ''"> |
| | | AND oh.cl_dt BETWEEN #{timeStart_close} AND #{timeStop_close} |
| | | AND oh.close_dt BETWEEN #{timeStart_close} AND #{timeStop_close} |
| | | </if> |
| | | </where> |
| | | ORDER BY oh.op_dt DESC |
| | |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | | <!--为指定(阀控器地址、水卡编号、无关阀记录)开关阀最新记录添加关阀时间,使之不在未关阀记录中显示--> |
| | | <update id="addCloseTime"> |
| | | UPDATE rm_open_close_valve_last |
| | | SET cl_dt = NOW() |
| | | WHERE rtu_addr = #{rtuAddr} AND op_ic_card_no = #{icCardNo} AND cl_dt IS NULL |
| | | </update> |
| | | </mapper> |
| | |
| | | |
| | | // 添加巡检记录 |
| | | OpeInspect opeInspect = new OpeInspect(); |
| | | opeInspect.setInspectorId(inspects.getInspectorId()); |
| | | opeInspect.setInspectorId(inspectorId); |
| | | if(startTime != null) { |
| | | opeInspect.setStartTime(startTime); |
| | | } |
| | |
| | | } |
| | | }else { |
| | | // 该巡检已上传过记录,续传 |
| | | if(stopTime != null) { |
| | | OpeInspect inspect = new OpeInspect(); |
| | | inspect.setId(inspectId); |
| | | inspect.setStopTime(stopTime); |
| | | inspectSv.updateInspect(inspect); |
| | | } |
| | | |
| | | if(tracks != null && tracks.size() > 0) { |
| | | for (int j = 0; j < tracks.size(); j++) { |
| | | tracks.get(j).setId(idLongGenerator.generate()); |
| | | tracks.get(j).setInspectId(inspectId); |
| | | } |
| | | Integer rec = inspectSv.insertTracks(tracks); |
| | | if(rec == null || rec == 0) { |
| | | return BaseResponseUtils.buildErrorMsg("巡检轨迹添加失败"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return BaseResponseUtils.buildSuccess() ; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 修改巡检记录 |
| | | * @param po |
| | | * @return |
| | | */ |
| | | public Integer updateInspect(OpeInspect po) { |
| | | return opeInspectMapper.updateByPrimaryKeySelective(po); |
| | | } |
| | | |
| | | /** |
| | | * 批量添加巡检轨迹 |
| | | * @param list |
| | | * @return |
| | |
| | | import com.dy.pipIrrGlobal.daoPr.PrIntakeVcMapper; |
| | | import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveLastMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; |
| | |
| | | private final PrWaterPriceMapper prWaterPriceMapper; |
| | | private final PrIntakeVcMapper prIntakeVcMapper; |
| | | private final SeClientCardMapper seClientCardMapper; |
| | | private RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper; |
| | | |
| | | /** |
| | | * pro_mw:属性 |
| | |
| | | private String pro_mw = "mw"; |
| | | private String key_mw = "comSendUrl"; |
| | | @Autowired |
| | | public CommandSv(RmCommandHistoryMapper rmCommandHistoryMapper, SeVirtualCardMapper seVirtualCardMapper, PrIntakeMapper prIntakeMapper, PrWaterPriceMapper prWaterPriceMapper, PrIntakeVcMapper prIntakeVcMapper, SeClientCardMapper seClientCardMapper, Environment env) { |
| | | public CommandSv(RmCommandHistoryMapper rmCommandHistoryMapper,RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper, SeVirtualCardMapper seVirtualCardMapper, PrIntakeMapper prIntakeMapper, PrWaterPriceMapper prWaterPriceMapper, PrIntakeVcMapper prIntakeVcMapper, SeClientCardMapper seClientCardMapper, Environment env) { |
| | | this.rmCommandHistoryMapper = rmCommandHistoryMapper; |
| | | this.rmOpenCloseValveLastMapper = rmOpenCloseValveLastMapper; |
| | | this.seVirtualCardMapper = seVirtualCardMapper; |
| | | this.prIntakeMapper = prIntakeMapper; |
| | | this.prWaterPriceMapper = prWaterPriceMapper; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 为指定(阀控器地址、水卡编号、无关阀记录)开关阀最新记录添加关阀时间,使之不在未关阀记录中显示 |
| | | * @param rtuAddr |
| | | * @param icCardNo |
| | | * @return |
| | | */ |
| | | public Integer addClostTime(String rtuAddr, String icCardNo) { |
| | | return rmOpenCloseValveLastMapper.addCloseTime(rtuAddr, icCardNo); |
| | | } |
| | | |
| | | /** |
| | | * 修改命令日志记录,回调报错时将命令记录的执行结果改为失败 |
| | | * @param po |
| | | * @return |
| | |
| | | import com.dy.pipIrrRemote.common.CommandSv; |
| | | import com.dy.pipIrrRemote.common.dto.*; |
| | | import com.dy.pipIrrRemote.result.RemoteResultCode; |
| | | import com.dy.pipIrrRemote.valve.dto.deleteUnclosedParam; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 强制因此未关阀记录:为指定(阀控器地址、水卡编号、无关阀记录)开关阀最新记录添加关阀时间,使之不在未关阀记录中显示 |
| | | * @param po |
| | | * @param bindingResult |
| | | * @return |
| | | */ |
| | | @PostMapping(path = "deleteUnclosed", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @SsoAop() |
| | | public BaseResponse<Boolean> deleteUnclosed(@RequestBody @Valid deleteUnclosedParam po, BindingResult bindingResult) { |
| | | if(bindingResult != null && bindingResult.hasErrors()){ |
| | | return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | |
| | | commandSv.addClostTime(po.getRtuAddr(), po.getVcNum()); |
| | | return BaseResponseUtils.buildSuccess(); |
| | | } |
| | | |
| | | /** |
| | | * 平台远程充值 |
| | | * @param po |
| | | * @param bindingResult |
New file |
| | |
| | | package com.dy.pipIrrRemote.valve.dto; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-10-19 10:48 |
| | | * @LastEditTime 2024-10-19 10:48 |
| | | * @Description 删除未关阀记录传入参数 |
| | | */ |
| | | |
| | | @Data |
| | | public class deleteUnclosedParam { |
| | | public static final long serialVersionUID = 202410191049001L; |
| | | |
| | | /** |
| | | * 阀控器地址 |
| | | */ |
| | | @NotBlank(message = "阀控器地址不能为空") |
| | | private String rtuAddr; |
| | | |
| | | /** |
| | | * 虚拟卡编号 |
| | | */ |
| | | @NotBlank(message = "虚拟卡编号不能为空") |
| | | private String vcNum; |
| | | } |
| | |
| | | import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmIrrigateProfileMapper; |
| | | import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveLastMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper; |
| | | import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; |
| | | import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; |
| | |
| | | private final PrIntakeVcMapper prIntakeVcMapper; |
| | | private final SeClientCardMapper seClientCardMapper; |
| | | private final RmIrrigateProfileMapper rmIrrigateProfileMapper; |
| | | private RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper; |
| | | |
| | | /** |
| | | * pro_mw:属性 |
| | |
| | | private String pro_mw = "mw"; |
| | | private String key_mw = "comSendUrl"; |
| | | @Autowired |
| | | public CommandSv(RmCommandHistoryMapper rmCommandHistoryMapper, SeVirtualCardMapper seVirtualCardMapper, PrIntakeMapper prIntakeMapper, PrWaterPriceMapper prWaterPriceMapper, PrIntakeVcMapper prIntakeVcMapper, SeClientCardMapper seClientCardMapper, RmIrrigateProfileMapper rmIrrigateProfileMapper, Environment env) { |
| | | public CommandSv(RmCommandHistoryMapper rmCommandHistoryMapper,RmOpenCloseValveLastMapper rmOpenCloseValveLastMapper, SeVirtualCardMapper seVirtualCardMapper, PrIntakeMapper prIntakeMapper, PrWaterPriceMapper prWaterPriceMapper, PrIntakeVcMapper prIntakeVcMapper, SeClientCardMapper seClientCardMapper, RmIrrigateProfileMapper rmIrrigateProfileMapper, Environment env) { |
| | | this.rmCommandHistoryMapper = rmCommandHistoryMapper; |
| | | this.rmOpenCloseValveLastMapper = rmOpenCloseValveLastMapper; |
| | | this.seVirtualCardMapper = seVirtualCardMapper; |
| | | this.prIntakeMapper = prIntakeMapper; |
| | | this.prWaterPriceMapper = prWaterPriceMapper; |
| | |
| | | jsonArray.add(jsonObject); |
| | | } |
| | | |
| | | System.out.println(jsonArray); |
| | | System.out.println(jsonArray.toJSONString()); |
| | | List<VoUnclosedValve> res = rmCommandHistoryMapper.getUnclosedValves(jsonArray.toJSONString(), operator); |
| | | if(res != null) { |
| | | return res; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 为指定(阀控器地址、水卡编号、无关阀记录)开关阀最新记录添加关阀时间,使之不在未关阀记录中显示 |
| | | * @param rtuAddr |
| | | * @param icCardNo |
| | | * @return |
| | | */ |
| | | public Integer addClostTime(String rtuAddr, String icCardNo) { |
| | | return rmOpenCloseValveLastMapper.addCloseTime(rtuAddr, icCardNo); |
| | | } |
| | | |
| | | /** |
| | | * 根据取水口ID获取与之绑定虚拟卡ID |
| | | * @param intakeId |
| | | * @return |
| | |
| | | import com.dy.pipIrrGlobal.voRm.VoIrrigaterProfile; |
| | | import com.dy.pipIrrGlobal.voRm.VoUnclosedValve; |
| | | import com.dy.pipIrrGlobal.voSe.VoVirtualCard; |
| | | import com.dy.pipIrrWechat.command.dto.AutomaticClose; |
| | | import com.dy.pipIrrWechat.command.dto.Recharge; |
| | | import com.dy.pipIrrWechat.command.dto.ValveClose; |
| | | import com.dy.pipIrrWechat.command.dto.ValveOpen; |
| | | import com.dy.pipIrrWechat.command.dto.*; |
| | | import com.dy.pipIrrWechat.result.WechatResultCode; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 强制因此未关阀记录:为指定(阀控器地址、水卡编号、无关阀记录)开关阀最新记录添加关阀时间,使之不在未关阀记录中显示 |
| | | * @param po |
| | | * @param bindingResult |
| | | * @return |
| | | */ |
| | | @PostMapping(path = "deleteUnclosed", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | public BaseResponse<Boolean> deleteUnclosed(@RequestBody @Valid deleteUnclosedParam po, BindingResult bindingResult) { |
| | | if(bindingResult != null && bindingResult.hasErrors()){ |
| | | return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | } |
| | | |
| | | commandSv.addClostTime(po.getRtuAddr(), po.getVcNum()); |
| | | return BaseResponseUtils.buildSuccess(); |
| | | } |
| | | |
| | | /** |
| | | * 小程序远程充值 |
| | | * @param po |
| | | * @param bindingResult |
New file |
| | |
| | | package com.dy.pipIrrWechat.command.dto; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author ZhuBaoMin |
| | | * @date 2024-10-19 11:07 |
| | | * @LastEditTime 2024-10-19 11:07 |
| | | * @Description 删除未关阀记录传入参数 |
| | | */ |
| | | @Data |
| | | public class deleteUnclosedParam { |
| | | public static final long serialVersionUID = 202410191108001L; |
| | | |
| | | /** |
| | | * 阀控器地址 |
| | | */ |
| | | @NotBlank(message = "阀控器地址不能为空") |
| | | private String rtuAddr; |
| | | |
| | | /** |
| | | * 虚拟卡编号 |
| | | */ |
| | | @NotBlank(message = "虚拟卡编号不能为空") |
| | | private String vcNum; |
| | | } |