From 5f54ba90abcc0ccf1b578472eac54fc98056767c Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期二, 08 四月 2025 17:15:13 +0800 Subject: [PATCH] 灌溉计划终止接口,包括远程关阀和取消灌溉计划 --- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java | 8 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoToTerminateIntakes.java | 33 +++ pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveClose.java | 5 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java | 146 ++++++++++++++++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoIntakeVc.java | 17 + pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java | 164 +++++++++-------- pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java | 81 ++++---- pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml | 14 pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml | 10 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java | 4 pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java | 14 + 11 files changed, 362 insertions(+), 134 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java index 1764751..105e954 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoIr/IrIntakeOperateMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dy.pipIrrGlobal.pojoIr.IrIntakeOperate; +import com.dy.pipIrrGlobal.voIr.VoToTerminateIntakes; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -49,4 +50,11 @@ * @return */ List<Long> getTerminateCommandIds(Long planId); + + /** + * 鏍规嵁璁″垝ID鑾峰彇寰呯粓姝㈢殑鍙栨按鍙e垪琛紙寮�闃�鎴愬姛鐨勶級 + * @param planId + * @return + */ + List<VoToTerminateIntakes> getToTerminateIntakes(Long planId); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java index 55372ef..d3a0a60 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java @@ -83,9 +83,9 @@ String getTimeByCommId(Long commId); /** - * 鏍规嵁鍛戒护鏃ュ織ID鑾峰彇鍙栨按鍙e強铏氭嫙鍗′俊鎭紝缁堟鐏屾簤璁″垝鏃朵娇鐢紝鐢ㄦ潵鎵ц杩滅▼鍏抽榾 + * 鏍规嵁鍛戒护鏃ュ織ID鑾峰彇寮�闃�淇℃伅锛岀粓姝㈢亴婧夎鍒掓椂浣跨敤锛岀敤鏉ユ墽琛岃繙绋嬪叧闃� * @param commandId * @return */ - VoIntakeVc getIntakeVc(Long commandId); + VoIntakeVc getValveOpen(Long commandId); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoToTerminateIntakes.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoToTerminateIntakes.java new file mode 100644 index 0000000..64ff42b --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoToTerminateIntakes.java @@ -0,0 +1,33 @@ +package com.dy.pipIrrGlobal.voIr; + +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Data; + +import java.util.Date; + +/** + * @author ZhuBaoMin + * @date 2025-04-08 11:32 + * @LastEditTime 2025-04-08 11:32 + * @Description 寰呯粓姝㈢殑鍙栨按鍙h鍥惧璞� + */ + +@Data +public class VoToTerminateIntakes { + public static final long serialVersionUID = 202504081135001L; + + /** + * 鍛戒护ID + */ + private Long commandId; + + /** + * 鍙栨按鍙D + */ + private Long intakeId; + + /** + * 寮�濮嬫椂闂� + */ + private Date startTime; +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoIntakeVc.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoIntakeVc.java index 51a78be..a7abce6 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoIntakeVc.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoIntakeVc.java @@ -7,21 +7,26 @@ * @author ZhuBaoMin * @date 2025-04-07 21:08 * @LastEditTime 2025-04-07 21:08 - * @Description 鍙栨按鍙c�佽櫄鎷熷崱瑙嗗浘瀵硅薄锛岀粓姝㈢亴婧夎鍒掓椂浣跨敤锛岀敤鏉ユ墽琛岃繙绋嬪叧闃� + * @Description 寮�闃�淇℃伅瑙嗗浘瀵硅薄锛岀粓姝㈢亴婧夎鍒掓椂浣跨敤锛岀敤鏉ユ墽琛岃繙绋嬪叧闃� */ @Data -@JsonPropertyOrder({"intakeId", "vcId"}) +@JsonPropertyOrder({"rtuAddr", "vcNum", "orderNo"}) public class VoIntakeVc { public static final long serialVersionUID = 202411281712001L; /** - * 鍙栨按鍙D + * 闃�鎺у櫒鍦板潃 */ - private Long intakeId; + private String rtuAddr; /** - * 铏氭嫙鍗D + * 铏氭嫙鍗$紪鍙� */ - private Long vcId; + private String vcNum; + + /** + * 璁㈠崟鍙� + */ + private String orderNo; } diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml index 207ef22..905c155 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIntakeOperateMapper.xml @@ -168,4 +168,14 @@ <select id="getTerminateCommandIds" resultType="java.lang.Long"> SELECT command_id AS commandId FROM ir_intake_operate WHERE operate_type = 1 AND plan_id = #{planId} </select> + + <!--鏍规嵁璁″垝ID鑾峰彇寰呯粓姝㈢殑鍙栨按鍙e垪琛紙寮�闃�鎴愬姛鐨勶級--> + <select id="getToTerminateIntakes" resultType="com.dy.pipIrrGlobal.voIr.VoToTerminateIntakes"> + SELECT + command_id AS commandId, + intake_id AS intakeId, + start_time AS startTime + FROM ir_intake_operate + WHERE operate_type = 1 AND command_result = 1 AND plan_id = #{planId} + </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml index 14eefe6..25c58bc 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml @@ -394,12 +394,14 @@ WHERE com_id = #{commId} </select> - <!--鏍规嵁鍛戒护鏃ュ織ID鑾峰彇鍙栨按鍙e強铏氭嫙鍗′俊鎭紝缁堟鐏屾簤璁″垝鏃朵娇鐢紝鐢ㄦ潵鎵ц杩滅▼鍏抽榾--> - <select id="getIntakeVc" resultType="com.dy.pipIrrGlobal.voRm.VoIntakeVc"> + <!--鏍规嵁鍛戒护鏃ュ織ID鑾峰彇寮�闃�淇℃伅锛岀粓姝㈢亴婧夎鍒掓椂浣跨敤锛岀敤鏉ユ墽琛岃繙绋嬪叧闃�--> + <select id="getValveOpen" resultType="com.dy.pipIrrGlobal.voRm.VoIntakeVc"> SELECT - intake_id AS intakeId, - (SELECT id FROM se_virtual_card WHERE vc_num = param ->> '$.icCardNo') AS vcId - FROM rm_command_history WHERE com_id = #{commandId} - LIMIT 0, 1 + rtu_addr AS rtuAddr, + param ->> '$.icCardNo' AS vcNum, + param ->> '$.orderNo' AS orderNo + FROM rm_command_history + WHERE com_id = #{commandId} + LIMIT 0, 1 </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java index e940483..f23d3b8 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java @@ -8,11 +8,13 @@ import com.dy.common.mw.protocol.p206V1.CodeV1; import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1; import com.dy.common.mw.protocol.p206V1.downVos.Com97Vo; +import com.dy.common.mw.protocol.p206V1.downVos.Com98Vo; import com.dy.common.mw.protocol.p206V1.downVos.ComA1Vo; import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2; import com.dy.common.mw.protocol.p206V202404.CodeV202404; import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404; import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo; +import com.dy.common.mw.protocol.p206V202404.downVos.ComCd93_A3Vo; import com.dy.common.util.IDLongGenerator; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; @@ -36,6 +38,7 @@ 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.ValveClose; import com.dy.pipIrrWechat.command.dto.ValveOpen; import com.dy.pipIrrWechat.result.WechatResultCode; import lombok.RequiredArgsConstructor; @@ -429,6 +432,13 @@ } } + /** + * 灏忕▼搴忚繙绋嬪紑闃� + * @param valve + * @param planId + * @param operatetype + * @return + */ public Map openWx(ValveOpen valve, Long planId, Byte operatetype) { Long intakeId = valve.getIntakeId(); String intakeName = valve.getIntakeName(); @@ -657,4 +667,140 @@ return map; } } + + /** + * 灏忕▼搴忚繙绋嬪叧闃� + * @param valve + * @param planId + * @param operatetype + * @return + */ + public Map closeWx(ValveClose valve, Long planId, Byte operatetype) { + String rtuAddr = valve.getRtuAddr(); + String vcNum = valve.getVcNum(); + Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L); + String orderNo = valve.getOrderNo(); + Long operator = valve.getOperator(); + Byte openType = valve.getOpenType(); + Long comId = new IDLongGenerator().generate(); + + // 闃�鎺у櫒鍦板潃鎹㈠彇姘村彛ID鍜岄�氳鍗忚 + JSONObject job_rtu = getRtu(null, rtuAddr); + if (job_rtu == null) { + irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.RTU_NOT_EXIST.getMessage()); + + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", WechatResultCode.RTU_NOT_EXIST.getMessage()); + map.put("content", null); + return map; + //return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_EXIST.getMessage()); + } + Long intakeId = job_rtu.getLong("intakeId"); + String protocol = job_rtu.getString("protocol"); + + // 濡傛灉鏄疆鐏� + if(openType != null && openType == 1) { + IrIntakeOperate irIntakeOperate = new IrIntakeOperate(); + irIntakeOperate.setPlanId(planId); + irIntakeOperate.setOperateType(operatetype); + irIntakeOperate.setCommandId(comId); + irIntakeOperate.setIntakeId(intakeId); + + Long id = addIntakeOperate(irIntakeOperate); + if(id == null) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", "娣诲姞鍙栨按鍙f搷浣滆褰曞け璐�"); + map.put("content", null); + return map; + } + } + + comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); + + String commandCode = null; + if (protocol.equals(ProtocolConstantV206V202404.protocolName)) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV202404.cd_A3; + + // 鍒涘缓瑙嗗浘 + ComCd93_A3Vo param = new ComCd93_A3Vo(); + param.controllerType = controllerType; + param.projectNo = projectNo; + param.icCardNo = vcNum; + param.orderNo = orderNo; + + /** + * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + * 1 鍑嗗鍙傛暟 + * 2 璋冪敤鍏叡鏂规硶 + */ + Param myParam = new Param(); + myParam.setComId(comId); + myParam.setComType((byte)2); + myParam.setCommandCode(commandCode); + myParam.setCommandName(CodeV202404.getCodeName(commandCode)); + myParam.setIntakeId(intakeId); + myParam.setRtuAddr(rtuAddr); + myParam.setProtocol(protocol); + myParam.setVcId(vcId); + myParam.setParam(param); + myParam.setRtuResultSendWebUrl(rtuCallbackUrl_wx); + myParam.setOperator(operator); + //return dealWithCommandResult(myParam); + BaseResponse<Boolean> result = dealWithCommandResult(myParam); + + Map map = new HashMap<>(); + map.put("success", result.isSuccess()); + map.put("msg", result.getMsg()); + map.put("content", result.getContent()); + return map; + } else if (protocol.equals(ProtocolConstantV206V1.protocolName) || protocol.equals(ProtocolConstantV206V2.protocolName)) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV1.cd_98; + + // 鍒涘缓瑙嗗浘 + Com98Vo param = new Com98Vo(); + param.icCardNo = vcNum; + param.orderNo = orderNo; + + /** + * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + * 1 鍑嗗鍙傛暟 + * 2 璋冪敤鍏叡鏂规硶 + */ + Param myParam = new Param(); + myParam.setComId(comId); + myParam.setComType((byte)2); + myParam.setCommandCode(commandCode); + myParam.setCommandName(CodeV1.getCodeName(commandCode)); + myParam.setIntakeId(intakeId); + myParam.setRtuAddr(rtuAddr); + myParam.setProtocol(protocol); + myParam.setVcId(vcId); + myParam.setParam(param); + myParam.setRtuResultSendWebUrl(rtuCallbackUrl_wx); + myParam.setOperator(operator); + //return dealWithCommandResult(myParam); + BaseResponse<Boolean> result = dealWithCommandResult(myParam); + + Map map = new HashMap<>(); + map.put("success", result.isSuccess()); + map.put("msg", result.getMsg()); + map.put("content", result.getContent()); + return map; + + } else { + irIntakeOperateMapper.updateByCommandId(comId, (byte)2, "绯荤粺鏆備笉鏀寔璇ュ崗璁�" + "(" + intakeId + ")"); + + Map map = new HashMap<>(); + map.put("success", false); + map.put("msg", "绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + map.put("content", null); + return map; + //return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } + + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java index c327f54..22e08e8 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java @@ -238,87 +238,93 @@ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } - String rtuAddr = valve.getRtuAddr(); - String vcNum = valve.getVcNum(); - Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L); - String orderNo = valve.getOrderNo(); - Long operator = valve.getOperator(); - Long comId = new IDLongGenerator().generate(); - - // 闃�鎺у櫒鍦板潃鎹㈠彇姘村彛ID鍜岄�氳鍗忚 - JSONObject job_rtu = getRtu(null, rtuAddr); - if (job_rtu == null) { - return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_EXIST.getMessage()); + Map map_result = commandSv.closeWx(valve, null, null); + if(map_result.get("success").equals(false)) { + return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); } - Long intakeId = job_rtu.getLong("intakeId"); - String protocol = job_rtu.getString("protocol"); - //String orgTag = job_rtu.getString("orgTag"); - //if(orgTag == null) { - // return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage()); + return BaseResponseUtils.buildSuccess(map_result.get("content")) ; + + //String rtuAddr = valve.getRtuAddr(); + //String vcNum = valve.getVcNum(); + //Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L); + //String orderNo = valve.getOrderNo(); + //Long operator = valve.getOperator(); + //Long comId = new IDLongGenerator().generate(); + // + //// 闃�鎺у櫒鍦板潃鎹㈠彇姘村彛ID鍜岄�氳鍗忚 + //JSONObject job_rtu = getRtu(null, rtuAddr); + //if (job_rtu == null) { + // return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_EXIST.getMessage()); //} - //comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); - comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); - - String commandCode = null; - if (protocol.equals(ProtocolConstantV206V202404.protocolName)) { - // 鑾峰彇鍔熻兘鐮� - commandCode = CodeV202404.cd_A3; - - // 鍒涘缓瑙嗗浘 - ComCd93_A3Vo param = new ComCd93_A3Vo(); - param.controllerType = controllerType; - param.projectNo = projectNo; - param.icCardNo = vcNum; - param.orderNo = orderNo; - - /** - * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� - * 1 鍑嗗鍙傛暟 - * 2 璋冪敤鍏叡鏂规硶 - */ - Param myParam = new Param(); - myParam.setComId(comId); - myParam.setComType((byte)2); - myParam.setCommandCode(commandCode); - myParam.setCommandName(CodeV202404.getCodeName(commandCode)); - myParam.setIntakeId(intakeId); - myParam.setRtuAddr(rtuAddr); - myParam.setProtocol(protocol); - myParam.setVcId(vcId); - myParam.setParam(param); - myParam.setRtuResultSendWebUrl(rtuCallbackUrl_wx); - myParam.setOperator(operator); - return dealWithCommandResult(myParam); - } else if (protocol.equals(ProtocolConstantV206V1.protocolName) || protocol.equals(ProtocolConstantV206V2.protocolName)) { - // 鑾峰彇鍔熻兘鐮� - commandCode = CodeV1.cd_98; - - // 鍒涘缓瑙嗗浘 - Com98Vo param = new Com98Vo(); - param.icCardNo = vcNum; - param.orderNo = orderNo; - - /** - * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� - * 1 鍑嗗鍙傛暟 - * 2 璋冪敤鍏叡鏂规硶 - */ - Param myParam = new Param(); - myParam.setComId(comId); - myParam.setComType((byte)2); - myParam.setCommandCode(commandCode); - myParam.setCommandName(CodeV1.getCodeName(commandCode)); - myParam.setIntakeId(intakeId); - myParam.setRtuAddr(rtuAddr); - myParam.setProtocol(protocol); - myParam.setVcId(vcId); - myParam.setParam(param); - myParam.setRtuResultSendWebUrl(rtuCallbackUrl_wx); - myParam.setOperator(operator); - return dealWithCommandResult(myParam); - } else { - return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); - } + //Long intakeId = job_rtu.getLong("intakeId"); + //String protocol = job_rtu.getString("protocol"); + ////String orgTag = job_rtu.getString("orgTag"); + ////if(orgTag == null) { + //// return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage()); + ////} + ////comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); + //comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); + // + //String commandCode = null; + //if (protocol.equals(ProtocolConstantV206V202404.protocolName)) { + // // 鑾峰彇鍔熻兘鐮� + // commandCode = CodeV202404.cd_A3; + // + // // 鍒涘缓瑙嗗浘 + // ComCd93_A3Vo param = new ComCd93_A3Vo(); + // param.controllerType = controllerType; + // param.projectNo = projectNo; + // param.icCardNo = vcNum; + // param.orderNo = orderNo; + // + // /** + // * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + // * 1 鍑嗗鍙傛暟 + // * 2 璋冪敤鍏叡鏂规硶 + // */ + // Param myParam = new Param(); + // myParam.setComId(comId); + // myParam.setComType((byte)2); + // myParam.setCommandCode(commandCode); + // myParam.setCommandName(CodeV202404.getCodeName(commandCode)); + // myParam.setIntakeId(intakeId); + // myParam.setRtuAddr(rtuAddr); + // myParam.setProtocol(protocol); + // myParam.setVcId(vcId); + // myParam.setParam(param); + // myParam.setRtuResultSendWebUrl(rtuCallbackUrl_wx); + // myParam.setOperator(operator); + // return dealWithCommandResult(myParam); + //} else if (protocol.equals(ProtocolConstantV206V1.protocolName) || protocol.equals(ProtocolConstantV206V2.protocolName)) { + // // 鑾峰彇鍔熻兘鐮� + // commandCode = CodeV1.cd_98; + // + // // 鍒涘缓瑙嗗浘 + // Com98Vo param = new Com98Vo(); + // param.icCardNo = vcNum; + // param.orderNo = orderNo; + // + // /** + // * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + // * 1 鍑嗗鍙傛暟 + // * 2 璋冪敤鍏叡鏂规硶 + // */ + // Param myParam = new Param(); + // myParam.setComId(comId); + // myParam.setComType((byte)2); + // myParam.setCommandCode(commandCode); + // myParam.setCommandName(CodeV1.getCodeName(commandCode)); + // myParam.setIntakeId(intakeId); + // myParam.setRtuAddr(rtuAddr); + // myParam.setProtocol(protocol); + // myParam.setVcId(vcId); + // myParam.setParam(param); + // myParam.setRtuResultSendWebUrl(rtuCallbackUrl_wx); + // myParam.setOperator(operator); + // return dealWithCommandResult(myParam); + //} else { + // return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + //} } /** diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveClose.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveClose.java index 1429bb5..9938178 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveClose.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveClose.java @@ -45,4 +45,9 @@ */ @NotNull(message = "鎿嶄綔浜轰笉鑳戒负绌�") private Long operator; + + /** + * 寮�闃�绫诲瀷锛�1-杞亴 + */ + private Byte openType; } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java index 4f02d79..2108113 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java @@ -10,9 +10,11 @@ import com.dy.pipIrrGlobal.voIr.VoIrrigateSchedule; import com.dy.pipIrrGlobal.voIr.VoPlanSimple; import com.dy.pipIrrGlobal.voIr.VoPlans; +import com.dy.pipIrrGlobal.voIr.VoToTerminateIntakes; import com.dy.pipIrrGlobal.voRm.VoIntakeVc; import com.dy.pipIrrWechat.command.CommandSv; import com.dy.pipIrrWechat.command.dto.AutomaticClose; +import com.dy.pipIrrWechat.command.dto.ValveClose; import com.dy.pipIrrWechat.command.dto.ValveOpen; import com.dy.pipIrrWechat.irrigatePlan.dto.IrrigatePlan; import com.dy.pipIrrWechat.irrigatePlan.dto.IrrigateSchedule; @@ -26,6 +28,7 @@ import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -305,18 +308,54 @@ Long planId = planSimple.getPlanId(); Long operatorId = planSimple.getOperatorId(); - Byte operateType = 2; // 鐢熸垚缁堟寮�濮嬫椂闂淬�佺粓姝㈢亴婧夋椂闀� DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - String terminateStartTimeStr = "2000-01-01 00:00:00"; + String terminateStartTimeStr = LocalDate.now().getYear() + "-01-01 00:00:00"; Date terminateStartTime = Date.from(LocalDateTime.parse(terminateStartTimeStr, formatter).atZone(ZoneId.systemDefault()).toInstant()); Integer terminateDuration = 9999; - // 鑾峰彇鍙粓姝㈡搷浣滆鍒掔殑鐏屾簤寮�濮嬫椂闂� + // 鍒ゆ柇璇ヨ鍒掓槸鍚﹀彲鎵ц缁堟鎿嶄綔锛氭湭鍒犻櫎銆佹湭缁堟銆佸凡鍙戝竷銆佸綋鍓嶆椂闂村皬浜庤鍒掔粨鏉熸椂闂� Date planStartTime = irrigatePlanSv.getToTerminatePlan(planId); if(planStartTime == null){ return BaseResponseUtils.buildErrorMsg("璇ヨ鍒掍笉瀛樺湪鎴栦笉鏀寔缁堟鎿嶄綔"); + } + + List<VoToTerminateIntakes> toTerminateIntakes = irrigatePlanSv.getToTerminateIntakes(planId); + if(toTerminateIntakes == null || toTerminateIntakes.size() == 0){ + return BaseResponseUtils.buildErrorMsg("璇ヨ鍒掍笉瀛樺湪鎴栧凡缁堟"); + } + + for(VoToTerminateIntakes toTerminateIntake : toTerminateIntakes){ + Long intakeId = toTerminateIntake.getIntakeId(); + Long commandId = toTerminateIntake.getCommandId(); + Date startTime = toTerminateIntake.getStartTime(); + Date currentTime = new Date(); + if(currentTime.before(startTime)){ + // 鍙栨秷锛堣鐩栧紑闃�璁″垝锛� + AutomaticClose automaticClose = new AutomaticClose(); + automaticClose.setIntakeId(intakeId); + automaticClose.setPlannedOpenTime(terminateStartTime); + automaticClose.setMinutes(terminateDuration); + automaticClose.setOperator(operatorId); + automaticClose.setOpenType(Byte.valueOf("1")); + + commandSv.planedOpenTimedClose(automaticClose, planId, (byte)2, terminateStartTime, terminateDuration); + }else { + // 缁堟锛堣繙绋嬪叧闃�锛� + VoIntakeVc intakeVc = irrigatePlanSv.getValveOpen(commandId); + String rtuAddr = intakeVc.getRtuAddr(); + String vcNum = intakeVc.getVcNum(); + String orderNo = intakeVc.getOrderNo(); + + ValveClose valveClose = new ValveClose(); + valveClose.setRtuAddr(rtuAddr); + valveClose.setVcNum(vcNum); + valveClose.setOrderNo(orderNo); + valveClose.setOperator(operatorId); + valveClose.setOpenType(Byte.valueOf("1")); + commandSv.closeWx(valveClose, planId, (byte)3); + } } // 缁堟璁″垝 @@ -341,42 +380,6 @@ if(irrigatePlanSv.addPlanOperate(planOperate) == 0){ return BaseResponseUtils.buildErrorMsg("娣诲姞缁堟鎿嶄綔璁板綍澶辫触"); } - - Date currentTime = new Date(); - if(currentTime.before(planStartTime)){ - // 鍙栨秷寮�闃�璁″垝 - List<Long> intakeIds = irrigatePlanSv.getToTerminateIntakeIds(planId); - for(Long intakeId : intakeIds) { - AutomaticClose automaticClose = new AutomaticClose(); - automaticClose.setIntakeId(intakeId); - automaticClose.setPlannedOpenTime(terminateStartTime); - automaticClose.setMinutes(terminateDuration); - automaticClose.setOperator(operatorId); - automaticClose.setOpenType(Byte.valueOf("1")); - - commandSv.planedOpenTimedClose(automaticClose, planId, operateType, terminateStartTime, terminateDuration); - } - } else { - // 鎵ц杩滅▼鍏抽榾 - List<Long> commandIds = irrigatePlanSv.getTerminateCommandIds(planId); - for(Long commandId : commandIds) { - VoIntakeVc intakeVc = irrigatePlanSv.getIntakeVc(commandId); - Long intakeId = intakeVc.getIntakeId(); - Long vdId = intakeVc.getVcId(); - - ValveOpen valve = new ValveOpen(); - valve.setIntakeId(intakeId); - valve.setVcId(vdId); - valve.setForceOpen(true); - valve.setOperator(operatorId); - valve.setOpenType(Byte.valueOf("1")); - - commandSv.openWx(valve, planId, operateType); - } - - } - return BaseResponseUtils.buildSuccess(); - } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java index abe5155..6761b72 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java @@ -9,6 +9,7 @@ import com.dy.pipIrrGlobal.voIr.VoIrrigateSchedule; import com.dy.pipIrrGlobal.voIr.VoPlanSimple; import com.dy.pipIrrGlobal.voIr.VoPlans; +import com.dy.pipIrrGlobal.voIr.VoToTerminateIntakes; import com.dy.pipIrrGlobal.voRm.VoIntakeVc; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -95,12 +96,21 @@ } /** + * 鏍规嵁璁″垝ID鑾峰彇寰呯粓姝㈢殑鍙栨按鍙e垪琛紙寮�闃�鎴愬姛鐨勶級 + * @param planId + * @return + */ + public List<VoToTerminateIntakes> getToTerminateIntakes(Long planId) { + return irIntakeOperateMapper.getToTerminateIntakes(planId); + } + + /** * 鏍规嵁鍛戒护鏃ュ織ID鑾峰彇鍙栨按鍙e強铏氭嫙鍗′俊鎭紝缁堟鐏屾簤璁″垝鏃朵娇鐢紝鐢ㄦ潵鎵ц杩滅▼鍏抽榾 * @param commandId * @return */ - public VoIntakeVc getIntakeVc(Long commandId) { - return rmdCommandHistoryMapper.getIntakeVc(commandId); + public VoIntakeVc getValveOpen(Long commandId) { + return rmdCommandHistoryMapper.getValveOpen(commandId); } /** -- Gitblit v1.8.0