pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/ComSupport.java
@@ -97,6 +97,7 @@ /** * 生成订单号 * * @return */ public String generateOrderNo() { @@ -114,12 +115,13 @@ /** * 根据取水口ID或阀控器地址获取阀控器对象 * * @param intakeId * @return */ public JSONObject getRtu(Long intakeId, String rtuAddr) { PrController prController = prControllerMapper.getRtu(intakeId, rtuAddr); if(prController == null) { if (prController == null) { return null; } JSONObject job_rtu = new JSONObject(); @@ -133,15 +135,16 @@ /** * 创建命令日志对象 * @param comId 主键 * * @param comId 主键 * @param commandCode 功能码 * @param rtuAddr 阀控器地址 * @param protocol 通讯协议名称 * @param param 参数数据 * @param operator 操作员 * @param rtuAddr 阀控器地址 * @param protocol 通讯协议名称 * @param param 参数数据 * @param operator 操作员 * @return */ protected RmCommandHistory getComHistory(Long comId, String commandCode, String commandName, Long intakeId, String rtuAddr, String protocol, Object param, Long operator ) { protected RmCommandHistory getComHistory(Long comId, String commandCode, String commandName, Long intakeId, String rtuAddr, String protocol, Object param, Long operator) { RmCommandHistory rmCommandHistory = new RmCommandHistory(); rmCommandHistory.setComId(comId); rmCommandHistory.setCommandCode(commandCode); @@ -158,44 +161,53 @@ /** * 构造命令对象 * @param comId 命令ID * * @param comId 命令ID * @param commandCode 功能码 * @param rtuAddr RTU地址 * @param param 参数数据 * @param rtuAddr RTU地址 * @param param 参数数据 * @return 构造好的命令对象 */ protected Command command(Long comId, String commandCode, String rtuAddr, String protocol, String rtuResultSendWebUrl, Object param){ Command com = new Command() ; protected Command command(Long comId, String commandCode, String rtuAddr, String protocol, String rtuResultSendWebUrl, Object param) { Command com = new Command(); com.id = String.valueOf(comId); com.code = commandCode ; com.rtuAddr = rtuAddr ; com.code = commandCode; com.rtuAddr = rtuAddr; com.protocol = protocol; com.type = commandTypeOuter; com.rtuResultSendWebUrl = rtuResultSendWebUrl ; com.rtuResultSendWebUrl = rtuResultSendWebUrl; com.param = param ; com.param = param; return com ; return com; } /** * 处理回调内容 * * @param comId * @return */ protected BaseResponse<Data> dealWithCallBack(Long comId) { CompletableFuture<Data> featureObject = new CompletableFuture<>(); features.put(comId, featureObject); protected BaseResponse<Data> dealWithCallBack(Long comId, Command com) { CompletableFuture<Data> feature = new CompletableFuture<>(); features.put(comId, feature); try { CompletableFuture<Data> feature = (CompletableFuture<Data>) features.get(comId); System.out.println("receive result ID:" + comId); // 发送命令 JSONObject response_SendCom = (JSONObject) JSON.toJSON(sendCom2Mw(com)); if (response_SendCom == null || !response_SendCom.getString("code").equals("0001")) { // 请求失败,RTU未上线,清除feature features.remove(comId); JSONObject job_param = response_SendCom.getJSONObject("content").getJSONObject("param"); return BaseResponseUtils.buildErrorMsg(job_param.getString("message")); } Data resultData = feature.get(180, TimeUnit.SECONDS); features.remove(comId); Long commandId = Long.parseLong(resultData.getCommandId()); if(commandId.equals(comId)) { if (commandId.equals(comId)) { return BaseResponseUtils.buildSuccess(resultData); }else { } else { return BaseResponseUtils.buildSuccess(); } } catch (InterruptedException e) { @@ -211,9 +223,10 @@ /** * 发送命令 * * @return */ protected BaseResponse sendCom2Mw(Command com){ protected BaseResponse sendCom2Mw(Command com) { String url = UriComponentsBuilder.fromUriString(comSendUrl) .build() .toUriString(); @@ -231,6 +244,7 @@ /** * 构造命令、发送命令并处理请求结果及执行结果 * * @param po * @return */ @@ -255,91 +269,79 @@ rmCommandHistoryMapper.insert(rmCommandHistory); comId = rmCommandHistory.getComId(); // 发送命令 JSONObject response_SendCom= (JSONObject) JSON.toJSON(sendCom2Mw(com)); if(response_SendCom != null && response_SendCom.getString("code").equals("0001")) { // 请求成功, 处理回调 BaseResponse response_CallBack = dealWithCallBack(comId); /** * 处理回调 * feature准备就绪后发送命令 * 命令发送后立即阻塞等待回调 */ BaseResponse response_CallBack = dealWithCallBack(comId, com); // 回调异常 if(!response_CallBack.getCode().equals("0001")) { // 命令日志执行结果改为失败 rmCommandHistory = new RmCommandHistory(); rmCommandHistory.setComId(comId); rmCommandHistory.setResult((byte)0); rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); return BaseResponseUtils.buildErrorMsg(response_CallBack.getContent().toString()); } // 回调超时 if (response_CallBack.getContent().toString().equals(CommandResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage())) { /** * 回调超时,暂时认为执行失败 * 命令置为失败 * 虚拟卡依旧保持使用中的状态 */ rmCommandHistory = new RmCommandHistory(); rmCommandHistory.setComId(comId); rmCommandHistory.setResult((byte) 0); rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); return BaseResponseUtils.buildErrorMsg(CommandResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage()); } // 回调成功,再判断执行是否成功 JSONObject job_content = (JSONObject)JSON.toJSON(response_CallBack.getContent()); JSONObject job_subData = (JSONObject) job_content.getJSONObject("subData").getJSONObject("subData"); Boolean dealResult = job_subData.getBoolean("success"); if(!dealResult) { /** * 执行失败 * 更新执行结果、返回结果时间、结果内容 */ rmCommandHistory = new RmCommandHistory(); rmCommandHistory.setComId(comId); rmCommandHistory.setResult((byte)0); rmCommandHistory.setResultTime(new Date()); //rmCommandHistory.setResultText((JSONObject)JSON.toJSON(response_CallBack.getContent())); rmCommandHistory.setResultText(response_CallBack.getContent().toString()); rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); return BaseResponseUtils.buildErrorMsg(response_CallBack.getContent().toString()); } /** * 执行成功 * 如果是开关阀:更改虚拟卡状态:是否使用中、最后操作、最后操作时间 * 更新执行结果、返回结果时间、结果内容 * 返回回调内容 */ if(comType != null) { SeVirtualCard virtualCard = new SeVirtualCard(); virtualCard.setId(vcId); if(comType == 1) { virtualCard.setInUse((byte) 1); }else { virtualCard.setInUse((byte) 0); } virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode()); virtualCard.setLastOperateTime(new Date()); seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard); } // 回调返回的内容 Data myData = (Data)response_CallBack.getContent(); // 更新命令日志:执行结果、返回结果时间、结果内容 //rmCommandHistory = new RmCommandHistory(); //rmCommandHistory.setComId(comId); //rmCommandHistory.setResult((byte)1); //rmCommandHistory.setResultTime(new Date()); //rmCommandHistory.setResultText((JSONObject)JSON.toJSON(myData)); //rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); return BaseResponseUtils.buildSuccess(myData) ; } else { // 请求失败 JSONObject job_param = response_SendCom.getJSONObject("content").getJSONObject("param"); return BaseResponseUtils.buildErrorMsg(job_param.getString("message")); // 回调异常 if (!response_CallBack.getCode().equals("0001")) { // 命令日志执行结果改为失败 rmCommandHistory = new RmCommandHistory(); rmCommandHistory.setComId(comId); rmCommandHistory.setResult((byte) 0); rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); return BaseResponseUtils.buildErrorMsg(response_CallBack.getContent().toString()); } // 回调超时 if (response_CallBack.getContent().toString().equals(CommandResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage())) { /** * 回调超时,暂时认为执行失败 * 命令置为失败 * 虚拟卡依旧保持使用中的状态 */ rmCommandHistory = new RmCommandHistory(); rmCommandHistory.setComId(comId); rmCommandHistory.setResult((byte) 0); rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); return BaseResponseUtils.buildErrorMsg(CommandResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage()); } // 回调成功,再判断执行是否成功 JSONObject job_content = (JSONObject) JSON.toJSON(response_CallBack.getContent()); JSONObject job_subData = (JSONObject) job_content.getJSONObject("subData").getJSONObject("subData"); Boolean dealResult = job_subData.getBoolean("success"); if (!dealResult) { /** * 执行失败 * 更新执行结果、返回结果时间、结果内容 */ rmCommandHistory = new RmCommandHistory(); rmCommandHistory.setComId(comId); rmCommandHistory.setResult((byte) 0); rmCommandHistory.setResultTime(new Date()); //rmCommandHistory.setResultText((JSONObject)JSON.toJSON(response_CallBack.getContent())); rmCommandHistory.setResultText(response_CallBack.getContent().toString()); rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); return BaseResponseUtils.buildErrorMsg(response_CallBack.getContent().toString()); } /** * 执行成功 * 如果是开关阀:更改虚拟卡状态:是否使用中、最后操作、最后操作时间 * 更新执行结果、返回结果时间、结果内容 * 返回回调内容 */ if (comType != null) { SeVirtualCard virtualCard = new SeVirtualCard(); virtualCard.setId(vcId); if (comType == 1) { virtualCard.setInUse((byte) 1); } else { virtualCard.setInUse((byte) 0); } virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode()); virtualCard.setLastOperateTime(new Date()); seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard); } // 回调返回的内容,回调结果写入命令日志表的任务由中间件完成 Data myData = (Data) response_CallBack.getContent(); return BaseResponseUtils.buildSuccess(myData); } } pipIrr-platform/pipIrr-global/src/main/resources/application-database-pj.yml
@@ -5,9 +5,9 @@ #name: pj type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver # url: jdbc:mysql://192.168.40.166:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://192.168.40.166:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://127.0.0.1:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://8.140.179.55:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://8.140.179.55:3306/pipIrr_pj?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull username: root password: dysql,;.abc!@# druid: pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -147,3 +147,5 @@ tokennofilter: urls: - /sso/sso - /remote/comRes/receive - /wx/comRes/receive pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml
@@ -5,6 +5,7 @@ driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull # url: jdbc:mysql://8.140.179.55:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull username: root password: dysql,;.abc!@# druid: pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/crop/CropCtrl.java
@@ -74,7 +74,7 @@ try { Integer rec = Optional.ofNullable(cropSv.addCrop(po)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.ADD_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.ADD_CROP_FAIL.getMessage()); } } catch (Exception e) { log.error("添加作物异常", e); @@ -102,13 +102,13 @@ @SsoAop() public BaseResponse<Boolean> delete(@RequestBody Map map) { if (map == null || map.size() <= 0) { BaseResponseUtils.buildFail(IrrigateResultCode.PLEASE_INPUT_PROJECT_ID.getMessage()); BaseResponseUtils.buildFail(IrrigateResultCode.PLEASE_INPUT_CROP_ID.getMessage()); } Long cropId = Long.parseLong(map.get("id").toString()); try { Integer rows = cropSv.deleteCrop(cropId); if (rows == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_CROP_FAIL.getMessage()); } } catch (Exception e) { log.error("删除作物异常", e); @@ -142,7 +142,7 @@ try { Integer rec = Optional.ofNullable(cropSv.updateCrop(po)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.UPDATE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.UPDATE_CROP_FAIL.getMessage()); } } catch (Exception e) { log.error("修改作物异常", e); pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/irrigateGroup/IrrigateGroupCtrl.java
@@ -71,7 +71,7 @@ try { Integer rec = Optional.ofNullable(irrigateGroupSv.addIrrigateGroup(po)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.ADD_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.ADD_GROUP_FAIL.getMessage()); } } catch (Exception e) { log.error("创建轮灌组异常", e); @@ -100,13 +100,13 @@ @SsoAop() public BaseResponse<Boolean> delete(@RequestBody Map map) { if (map == null || map.size() <= 0) { BaseResponseUtils.buildFail(IrrigateResultCode.PLEASE_INPUT_PROJECT_ID.getMessage()); BaseResponseUtils.buildFail(IrrigateResultCode.PLEASE_INPUT_GROUP_ID.getMessage()); } Long groupId = Long.parseLong(map.get("id").toString()); try { Integer rows = irrigateGroupSv.deleteIrrigateGroup(groupId); if (rows == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_GROUP_FAIL.getMessage()); } } catch (Exception e) { log.error("删除轮灌组异常", e); @@ -134,7 +134,7 @@ try { Integer rows = irrigateGroupSv.deleteIrrigateGroup(groupId); if (rows == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_GROUP_FAIL.getMessage()); } } catch (Exception e) { log.error("删除轮灌组异常", e); @@ -170,7 +170,7 @@ try { Integer rec = Optional.ofNullable(irrigateGroupSv.updateIrrigateGroup(po)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.UPDATE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.UPDATE_GROUP_FAIL.getMessage()); } } catch (Exception e) { log.error("修改轮灌组异常", e); @@ -264,7 +264,7 @@ irGroupUnit.setOperator(operator); Integer rec = Optional.ofNullable(irrigateGroupSv.addGroupUnit(irGroupUnit)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.ADD_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.GROUP_ADD_UNIT_FAIL.getMessage()); } } } catch (Exception e) { pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/irrigateScheduling/IrrigateSchedulingCtrl.java
@@ -71,7 +71,7 @@ try { Integer rec = Optional.ofNullable(irIrrigateSchedulingSv.addScheduling(po)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.ADD_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.ADD_SCHEDULING_FAIL.getMessage()); } } catch (Exception e) { log.error("添加作物灌溉制度异常", e); @@ -98,13 +98,13 @@ @SsoAop() public BaseResponse<Boolean> delete(@RequestBody Map map) { if (map == null || map.size() <= 0) { BaseResponseUtils.buildFail(IrrigateResultCode.PLEASE_INPUT_PROJECT_ID.getMessage()); BaseResponseUtils.buildFail(IrrigateResultCode.PLEASE_INPUT_SCHEDULING_ID.getMessage()); } Long schedulingId = Long.parseLong(map.get("id").toString()); try { Integer rows = irIrrigateSchedulingSv.deleteScheduling(schedulingId); if (rows == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_SCHEDULING_FAIL.getMessage()); } } catch (Exception e) { log.error("删除作物灌溉制度异常", e); @@ -138,7 +138,7 @@ try { Integer rec = Optional.ofNullable(irIrrigateSchedulingSv.updateScheduling(po)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.UPDATE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.UPDATE_SCHEDULING_FAIL.getMessage()); } } catch (Exception e) { log.error("修改作物灌溉制度异常", e); pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/irrigateUnit/IrrigateUnitCtrl.java
@@ -71,7 +71,7 @@ try { Integer rec = Optional.ofNullable(irrigateUnitSv.addIrrigateUnit(po)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.ADD_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.ADD_UNIT_FAIL.getMessage()); } } catch (Exception e) { log.error("创建灌溉单元异常", e); @@ -99,13 +99,13 @@ @SsoAop() public BaseResponse<Boolean> delete(@RequestBody Map map) { if (map == null || map.size() <= 0) { BaseResponseUtils.buildFail(IrrigateResultCode.PLEASE_INPUT_PROJECT_ID.getMessage()); BaseResponseUtils.buildFail(IrrigateResultCode.PLEASE_INPUT_UNIT_ID.getMessage()); } Long unitId = Long.parseLong(map.get("id").toString()); try { Integer rows = irrigateUnitSv.deleteUnit(unitId); if (rows == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_UNIT_FAIL.getMessage()); } } catch (Exception e) { log.error("删除灌溉单元异常", e); @@ -132,7 +132,7 @@ try { Integer rows = irrigateUnitSv.deleteUnit(unitId); if (rows == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.DELETE_UNIT_FAIL.getMessage()); } } catch (Exception e) { log.error("删除灌溉单元异常", e); @@ -167,7 +167,7 @@ try { Integer rec = Optional.ofNullable(irrigateUnitSv.updateUnit(po)).orElse(0); if (rec == 0) { return BaseResponseUtils.buildFail(IrrigateResultCode.UPDATE_PROJECT_FAIL.getMessage()); return BaseResponseUtils.buildFail(IrrigateResultCode.UPDATE_UNIT_FAIL.getMessage()); } } catch (Exception e) { log.error("修改灌溉单元异常", e); pipIrr-platform/pipIrr-web/pipIrr-web-irrigate/src/main/java/com/dy/pipIrrIrrigate/result/IrrigateResultCode.java
@@ -26,13 +26,40 @@ * 灌溉单元 */ UNIT_ASSOCIATE_CLIENT_FAIL(20001, "灌溉单元分配失败"), ADD_UNIT_FAIL(20002, "灌溉单元添加失败"), PLEASE_INPUT_UNIT_ID(20003, "请输入灌溉单元ID"), DELETE_UNIT_FAIL(20004, "灌溉单元删除失败"), UPDATE_UNIT_FAIL(20005, "灌溉单元修改失败"), /** * 轮灌组 */ GRPUP_ASSOCIATE_CLIENT_FAIL(30001, "轮灌组关联农户失败"); GRPUP_ASSOCIATE_CLIENT_FAIL(30001, "轮灌组关联农户失败"), ADD_GROUP_FAIL(30002, "轮灌组添加失败"), PLEASE_INPUT_GROUP_ID(30003, "请输入轮灌组ID"), DELETE_GROUP_FAIL(30004, "轮灌组删除失败"), UPDATE_GROUP_FAIL(30005, "轮灌组修改失败"), GROUP_ADD_UNIT_FAIL(30006, "轮灌组添加灌溉单元失败"), GROUP_DELETE_UNIT_FAIL(30007, "轮灌组移除灌溉单元失败"), UPDATE_GROUP_BIND_UNIT_FAIL(30008, "修改轮灌组绑定的灌溉单元失败"), // ADD_IRRIGATE_UNIT_FAIL(20001, "创建灌溉单元失败"), /** * 作物 */ ADD_CROP_FAIL(40001, "作物添加失败"), PLEASE_INPUT_CROP_ID(40002, "请输入作物ID"), DELETE_CROP_FAIL(40003, "作物删除失败"), UPDATE_CROP_FAIL(40004, "作物修改失败"), /** * 作物灌溉制度 */ ADD_SCHEDULING_FAIL(50001, "作物灌溉制度添加失败"), PLEASE_INPUT_SCHEDULING_ID(50002, "请输入作物灌溉制度ID"), DELETE_SCHEDULING_FAIL(50003, "作物灌溉制度删除失败"), UPDATE_SCHEDULING_FAIL(50004, "作物灌溉制度修改失败"); private final Integer code; private final String message; pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java
@@ -34,6 +34,8 @@ CompletableFuture<Data> feature = (CompletableFuture<Data>) features.get(comId); if(feature != null) { feature.complete(data); }else{ log.error("feature is null"); } return BaseResponseUtils.buildSuccess("ok"); }