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获取待终止的取水口列表(开阀成功的) * @param planId * @return */ List<VoToTerminateIntakes> getToTerminateIntakes(Long planId); } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmCommandHistoryMapper.java
@@ -83,9 +83,9 @@ String getTimeByCommId(Long commId); /** * 根据命令日志ID获取取水口及虚拟卡信息,终止灌溉计划时使用,用来执行远程关阀 * 根据命令日志ID获取开阀信息,终止灌溉计划时使用,用来执行远程关阀 * @param commandId * @return */ VoIntakeVc getIntakeVc(Long commandId); VoIntakeVc getValveOpen(Long commandId); } pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voIr/VoToTerminateIntakes.java
New file @@ -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 待终止的取水口视图对象 */ @Data public class VoToTerminateIntakes { public static final long serialVersionUID = 202504081135001L; /** * 命令ID */ private Long commandId; /** * 取水口ID */ private Long intakeId; /** * 开始时间 */ private Date startTime; } 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 取水口、虚拟卡视图对象,终止灌溉计划时使用,用来执行远程关阀 * @Description 开阀信息视图对象,终止灌溉计划时使用,用来执行远程关阀 */ @Data @JsonPropertyOrder({"intakeId", "vcId"}) @JsonPropertyOrder({"rtuAddr", "vcNum", "orderNo"}) public class VoIntakeVc { public static final long serialVersionUID = 202411281712001L; /** * 取水口ID * 阀控器地址 */ private Long intakeId; private String rtuAddr; /** * 虚拟卡ID * 虚拟卡编号 */ private Long vcId; private String vcNum; /** * 订单号 */ private String orderNo; } 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获取待终止的取水口列表(开阀成功的)--> <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> pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrIrrigatePlanMapper.xml
@@ -295,7 +295,11 @@ ) AS planState FROM ir_irrigate_plan plan INNER JOIN ir_project pro ON pro.id = plan.project_id WHERE plan.deleted = 0 AND (plan.plan_state = 1 OR NOW() < plan.plan_stop_time) <where> AND plan.deleted = 0 AND (plan.plan_state = 1 OR NOW() < plan.plan_stop_time) AND plan.executing_state != 3 </where> ORDER BY plan.plan_state DESC </select> @@ -309,14 +313,10 @@ plan.plan_start_time AS planStartTime, plan.plan_stop_time AS planStopTime, plan.duration, IF(plan.plan_state = 1, 1, IF(NOW() < plan.plan_start_time, 2, IF(NOW() >= plan.plan_start_time AND NOW() < plan.plan_stop_time, 3, 4) ) ) AS planState IF(plan.executing_state = 3, 5, 4) AS planState FROM ir_irrigate_plan plan INNER JOIN ir_project pro ON pro.id = plan.project_id WHERE plan.deleted = 0 AND (plan.plan_state = 2 AND NOW() >= plan.plan_stop_time) WHERE plan.deleted = 0 AND ((plan.plan_state = 2 AND NOW() >= plan.plan_stop_time) OR (plan.executing_state = 3)) ORDER BY plan.plan_state DESC </select> pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmCommandHistoryMapper.xml
@@ -394,12 +394,14 @@ WHERE com_id = #{commId} </select> <!--根据命令日志ID获取取水口及虚拟卡信息,终止灌溉计划时使用,用来执行远程关阀--> <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> 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", "添加取水口操作记录失败"); 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("系统暂不支持该协议"); } } } 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("系统暂不支持该协议"); //} } /** 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; } 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(); } } 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获取待终止的取水口列表(开阀成功的) * @param planId * @return */ public List<VoToTerminateIntakes> getToTerminateIntakes(Long planId) { return irIntakeOperateMapper.getToTerminateIntakes(planId); } /** * 根据命令日志ID获取取水口及虚拟卡信息,终止灌溉计划时使用,用来执行远程关阀 * @param commandId * @return */ public VoIntakeVc getIntakeVc(Long commandId) { return rmdCommandHistoryMapper.getIntakeVc(commandId); public VoIntakeVc getValveOpen(Long commandId) { return rmdCommandHistoryMapper.getValveOpen(commandId); } /** pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigation/IrrigationCtrl.java
@@ -36,10 +36,9 @@ * @return */ @GetMapping(path = "/getSimpleProjects") public BaseResponse<QueryResultVo<List<VoProjectSimple>>> getSimpleProjects(QoProject qo) { public BaseResponse<List<VoProjectSimple>> getSimpleProjects(QoProject qo) { try { QueryResultVo<List<VoProjectSimple>> res = irrigationSv.getSimpleProjects(qo); return BaseResponseUtils.buildSuccess(res); return BaseResponseUtils.buildSuccess(irrigationSv.getSimpleProjects(qo)); } catch (Exception e) { log.error("获取项目记录异常", e); return BaseResponseUtils.buildException(e.getMessage()); pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/irrigation/IrrigationSv.java
@@ -36,15 +36,9 @@ * @param queryVo * @return */ public QueryResultVo<List<VoProjectSimple>> getSimpleProjects(QoProject queryVo) { public List<VoProjectSimple> getSimpleProjects(QoProject queryVo) { Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo); Long itemTotal = irProjectMapper.getSimpleProjectsCount(params); QueryResultVo<List<VoProjectSimple>> rsVo = new QueryResultVo<>(); rsVo.calculateAndSet(itemTotal, params); rsVo.obj = irProjectMapper.getSimpleProjects(params); return rsVo; return irProjectMapper.getSimpleProjects(params); } /**