pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java
@@ -2,10 +2,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 com.dy.pipIrrGlobal.voRm.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -84,4 +81,11 @@ * @return */ String getTimeByCommId(Long commId); /** * 根据命令日志ID获取取水口及虚拟卡信息,终止灌溉计划时使用,用来执行远程关阀 * @param commandId * @return */ VoIntakeVc getIntakeVc(Long commandId); } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voRm/VoIntakeVc.java
New file @@ -0,0 +1,27 @@ package com.dy.pipIrrGlobal.voRm; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import lombok.Data; /** * @author ZhuBaoMin * @date 2025-04-07 21:08 * @LastEditTime 2025-04-07 21:08 * @Description 取水口、虚拟卡视图对象,终止灌溉计划时使用,用来执行远程关阀 */ @Data @JsonPropertyOrder({"intakeId", "vcId"}) public class VoIntakeVc { public static final long serialVersionUID = 202411281712001L; /** * 取水口ID */ private Long intakeId; /** * 虚拟卡ID */ private Long vcId; } pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
@@ -393,4 +393,13 @@ FROM rm_command_history WHERE com_id = #{commId} </select> <!--根据命令日志ID获取取水口及虚拟卡信息,终止灌溉计划时使用,用来执行远程关阀--> <select id="getIntakeVc" 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 </select> </mapper> pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
@@ -7,11 +7,15 @@ import com.dy.common.mw.protocol.Command; 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.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.util.IDLongGenerator; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.command.ComSupport; import com.dy.pipIrrGlobal.command.dto.Param; @@ -32,6 +36,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.ValveOpen; import com.dy.pipIrrWechat.result.WechatResultCode; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -423,4 +428,233 @@ return map; } } public Map openWx(ValveOpen valve, Long planId, Byte operatetype) { Long intakeId = valve.getIntakeId(); String intakeName = valve.getIntakeName(); Long vcId = valve.getVcId(); Boolean forceOpen = valve.getForceOpen(); Long operator = valve.getOperator(); Byte openType = valve.getOpenType(); Long comId = new IDLongGenerator().generate(); // 如果是轮灌 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", "添加取水口操作记录失败"); map.put("content", null); return map; } } if(intakeId == null && intakeName == null) { irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage() + "(" + intakeId + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage() + "(" + intakeId + ")"); map.put("content", null); return map; //return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage()); } // intakeName换intakeId if(intakeId == null) { intakeId = getIntakeIdByName(intakeName); if(intakeId == null) { irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage() + "(" + intakeId + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage() + "(" + intakeId + ")"); map.put("content", null); return map; //return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage()); } } /** * 如果农户选择了虚拟卡,则使用该虚拟卡 * 如果农户未选择虚拟卡,则根据取水口ID获取与之绑定的虚拟卡 * 如果取水口没有与之绑定的虚拟卡,则提示农户选择一张虚拟卡 */ if (vcId == null) { vcId = getVcIdByIntakeId(intakeId); if (vcId == null) { irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.PLEASE_SELECT_A_VC.getMessage() + "(" + intakeId + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.PLEASE_SELECT_A_VC.getMessage() + "(" + intakeId + ")"); map.put("content", null); return map; //return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); } } // 虚拟卡ID换虚拟卡对象 VoVirtualCard vc = getVcById(vcId); if (vc == null) { irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.PLEASE_SELECT_A_VC.getMessage() + "(" + intakeId + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.PLEASE_SELECT_A_VC.getMessage() + "(" + intakeId + ")"); map.put("content", null); return map; //return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); } // 虚拟卡状态为使用中,且不是强制开阀时提示 if (vc.getInUse() && !forceOpen) { irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage() + "(" + intakeId + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage() + "(" + intakeId + ")"); map.put("content", null); return map; //return BaseResponseUtils.buildCodeMsg(WechatResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getCode(), WechatResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage()); } // 获取水价 Double waterPrice = getPrice(); if(waterPrice == null) { irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.NO_WATER_PRICE.getMessage() + "(" + intakeId + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.NO_WATER_PRICE.getMessage() + "(" + intakeId + ")"); map.put("content", null); return map; //return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_WATER_PRICE.getMessage()); } // 取水口ID换阀控器地址及通讯协议 JSONObject job_rtu = getRtu(intakeId, null); if (job_rtu == null) { irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.RTU_NOT_EXIST.getMessage() + "(" + intakeId + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.RTU_NOT_EXIST.getMessage() + "(" + intakeId + ")"); map.put("content", null); return map; //return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_EXIST.getMessage()); } String rtuAddr = job_rtu.getString("rtuAddr"); String protocol = job_rtu.getString("protocol"); comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); // 生成订单号 String orderNo = generateOrderNo(); if(orderNo == null) { irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.NO_ORDER_NUMBER.getMessage() + "(" + intakeId + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", WechatResultCode.NO_ORDER_NUMBER.getMessage() + "(" + intakeId + ")"); map.put("content", null); return map; //return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_ORDER_NUMBER.getMessage()); } String commandCode = null; if (protocol.equals(ProtocolConstantV206V202404.protocolName)) { // 获取功能码 commandCode = CodeV202404.cd_A2; // 创建视图 ComCd92_A2Vo param = new ComCd92_A2Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.icCardNo = vc.getVcNum().toString(); param.waterRemain = 0.0; param.moneyRemain = vc.getMoney(); param.waterPrice = waterPrice; param.elePrice = 0.0; param.orderNo = orderNo; /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)1); 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); 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_97; // 创建视图 Com97Vo param = new Com97Vo(); param.icCardNo = vc.getVcNum().toString(); param.moneyRemain = vc.getMoney(); param.waterPrice = waterPrice; param.orderNo = orderNo; /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)1); 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 { //return BaseResponseUtils.buildErrorMsg("系统暂不支持该协议"); irIntakeOperateMapper.updateByCommandId(comId, (byte)2, "系统暂不支持该协议" + "(" + intakeId + ")"); Map map = new HashMap<>(); map.put("success", false); map.put("msg", "系统暂不支持该协议"); map.put("content", null); return map; } } } pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java
@@ -85,141 +85,143 @@ return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } Long intakeId = valve.getIntakeId(); String intakeName = valve.getIntakeName(); Long vcId = valve.getVcId(); Boolean forceOpen = valve.getForceOpen(); Long operator = valve.getOperator(); Long comId = new IDLongGenerator().generate(); Map map_result = commandSv.openWx(valve, null, null); if(map_result.get("success").equals(false)) { return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString()); } return BaseResponseUtils.buildSuccess(map_result.get("content")) ; if(intakeId == null && intakeName == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage()); } // intakeName换intakeId if(intakeId == null) { intakeId = commandSv.getIntakeIdByName(intakeName); if(intakeId == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage()); } } /** * 如果农户选择了虚拟卡,则使用该虚拟卡 * 如果农户未选择虚拟卡,则根据取水口ID获取与之绑定的虚拟卡 * 如果取水口没有与之绑定的虚拟卡,则提示农户选择一张虚拟卡 */ if (vcId == null) { vcId = commandSv.getVcIdByIntakeId(intakeId); if (vcId == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); } } // 虚拟卡ID换虚拟卡对象 VoVirtualCard vc = commandSv.getVcById(vcId); if (vc == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); } // 虚拟卡状态为使用中,且不是强制开阀时提示 if (vc.getInUse() && !forceOpen) { return BaseResponseUtils.buildCodeMsg(WechatResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getCode(), WechatResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage()); } // 获取水价 Double waterPrice = commandSv.getPrice(); if(waterPrice == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_WATER_PRICE.getMessage()); } // 取水口ID换阀控器地址及通讯协议 JSONObject job_rtu = getRtu(intakeId, null); if (job_rtu == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_EXIST.getMessage()); } String rtuAddr = job_rtu.getString("rtuAddr"); 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()); //Long intakeId = valve.getIntakeId(); //String intakeName = valve.getIntakeName(); //Long vcId = valve.getVcId(); //Boolean forceOpen = valve.getForceOpen(); //Long operator = valve.getOperator(); //Long comId = new IDLongGenerator().generate(); // //if(intakeId == null && intakeName == null) { // return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage()); //} //comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); // 生成订单号 String orderNo = generateOrderNo(); if(orderNo == null) { return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_ORDER_NUMBER.getMessage()); } String commandCode = null; if (protocol.equals(ProtocolConstantV206V202404.protocolName)) { // 获取功能码 commandCode = CodeV202404.cd_A2; // 创建视图 ComCd92_A2Vo param = new ComCd92_A2Vo(); param.controllerType = controllerType; param.projectNo = projectNo; param.icCardNo = vc.getVcNum().toString(); param.waterRemain = 0.0; param.moneyRemain = vc.getMoney(); param.waterPrice = waterPrice; param.elePrice = 0.0; param.orderNo = orderNo; /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)1); 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_97; // 创建视图 Com97Vo param = new Com97Vo(); param.icCardNo = vc.getVcNum().toString(); param.moneyRemain = vc.getMoney(); param.waterPrice = waterPrice; param.orderNo = orderNo; /** * 构造命令、发送命令并处理请求结果及执行结果 * 1 准备参数 * 2 调用公共方法 */ Param myParam = new Param(); myParam.setComId(comId); myParam.setComType((byte)1); 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("系统暂不支持该协议"); } // //// intakeName换intakeId //if(intakeId == null) { // intakeId = commandSv.getIntakeIdByName(intakeName); // if(intakeId == null) { // return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_INTAKE.getMessage()); // } //} // ///** // * 如果农户选择了虚拟卡,则使用该虚拟卡 // * 如果农户未选择虚拟卡,则根据取水口ID获取与之绑定的虚拟卡 // * 如果取水口没有与之绑定的虚拟卡,则提示农户选择一张虚拟卡 // */ //if (vcId == null) { // vcId = commandSv.getVcIdByIntakeId(intakeId); // if (vcId == null) { // return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); // } //} // //// 虚拟卡ID换虚拟卡对象 //VoVirtualCard vc = commandSv.getVcById(vcId); //if (vc == null) { // return BaseResponseUtils.buildErrorMsg(WechatResultCode.PLEASE_SELECT_A_VC.getMessage()); //} // //// 虚拟卡状态为使用中,且不是强制开阀时提示 //if (vc.getInUse() && !forceOpen) { // return BaseResponseUtils.buildCodeMsg(WechatResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getCode(), WechatResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage()); //} // //// 获取水价 //Double waterPrice = commandSv.getPrice(); //if(waterPrice == null) { // return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_WATER_PRICE.getMessage()); //} // //// 取水口ID换阀控器地址及通讯协议 //JSONObject job_rtu = getRtu(intakeId, null); //if (job_rtu == null) { // return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_EXIST.getMessage()); //} //String rtuAddr = job_rtu.getString("rtuAddr"); //String protocol = job_rtu.getString("protocol"); // //comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw); // //// 生成订单号 //String orderNo = generateOrderNo(); //if(orderNo == null) { // return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_ORDER_NUMBER.getMessage()); //} // //String commandCode = null; //if (protocol.equals(ProtocolConstantV206V202404.protocolName)) { // // 获取功能码 // commandCode = CodeV202404.cd_A2; // // // 创建视图 // ComCd92_A2Vo param = new ComCd92_A2Vo(); // param.controllerType = controllerType; // param.projectNo = projectNo; // param.icCardNo = vc.getVcNum().toString(); // param.waterRemain = 0.0; // param.moneyRemain = vc.getMoney(); // param.waterPrice = waterPrice; // param.elePrice = 0.0; // param.orderNo = orderNo; // // /** // * 构造命令、发送命令并处理请求结果及执行结果 // * 1 准备参数 // * 2 调用公共方法 // */ // Param myParam = new Param(); // myParam.setComId(comId); // myParam.setComType((byte)1); // 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_97; // // // 创建视图 // Com97Vo param = new Com97Vo(); // param.icCardNo = vc.getVcNum().toString(); // param.moneyRemain = vc.getMoney(); // param.waterPrice = waterPrice; // param.orderNo = orderNo; // // /** // * 构造命令、发送命令并处理请求结果及执行结果 // * 1 准备参数 // * 2 调用公共方法 // */ // Param myParam = new Param(); // myParam.setComId(comId); // myParam.setComType((byte)1); // 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("系统暂不支持该协议"); //} } /** pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/dto/ValveOpen.java
@@ -25,4 +25,9 @@ */ private Boolean forceOpen = false; /** * 开阀类型;1-轮灌 */ private Byte openType; } pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanCtrl.java
@@ -6,11 +6,14 @@ import com.dy.pipIrrGlobal.pojoIr.IrIrrigateSchedule; import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate; import com.dy.pipIrrGlobal.pojoIr.IrPlanSchedule; import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; import com.dy.pipIrrGlobal.voIr.VoIrrigateSchedule; import com.dy.pipIrrGlobal.voIr.VoPlanSimple; import com.dy.pipIrrGlobal.voIr.VoPlans; 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.ValveOpen; import com.dy.pipIrrWechat.irrigatePlan.dto.IrrigatePlan; import com.dy.pipIrrWechat.irrigatePlan.dto.IrrigateSchedule; import com.dy.pipIrrWechat.irrigatePlan.dto.PlanSimple; @@ -308,7 +311,7 @@ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String terminateStartTimeStr = "2000-01-01 00:00:00"; Date terminateStartTime = Date.from(LocalDateTime.parse(terminateStartTimeStr, formatter).atZone(ZoneId.systemDefault()).toInstant()); Integer terminateDuration = 100000; Integer terminateDuration = 9999; // 获取可终止操作计划的灌溉开始时间 Date planStartTime = irrigatePlanSv.getToTerminatePlan(planId); @@ -355,6 +358,22 @@ } } 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(); pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigatePlan/IrrigatePlanSv.java
@@ -1,6 +1,7 @@ package com.dy.pipIrrWechat.irrigatePlan; import com.dy.pipIrrGlobal.daoIr.*; import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; import com.dy.pipIrrGlobal.pojoIr.IrIrrigatePlan; import com.dy.pipIrrGlobal.pojoIr.IrIrrigateSchedule; import com.dy.pipIrrGlobal.pojoIr.IrPlanOperate; @@ -8,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.voRm.VoIntakeVc; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -52,6 +54,9 @@ @Autowired private IrIntakeOperateMapper irIntakeOperateMapper; @Autowired private RmCommandHistoryMapper rmdCommandHistoryMapper; /** * 添加灌溉计划 * @param po @@ -81,7 +86,7 @@ } /** * 根据计划ID获取待终止的命令ID * 根据计划ID获取待终止的命令ID列表 * @param planId * @return */ @@ -90,6 +95,15 @@ } /** * 根据命令日志ID获取取水口及虚拟卡信息,终止灌溉计划时使用,用来执行远程关阀 * @param commandId * @return */ public VoIntakeVc getIntakeVc(Long commandId) { return rmdCommandHistoryMapper.getIntakeVc(commandId); } /** * 修改灌溉计划 * @param po * @return