|  |  | 
 |  |  | package com.dy.pipIrrRemote.rtu; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson2.JSON; | 
 |  |  | import com.alibaba.fastjson2.JSONObject; | 
 |  |  | import com.dy.common.aop.SsoAop; | 
 |  |  | import com.dy.common.mw.protocol.Command; | 
 |  |  | import com.dy.common.mw.protocol.Data; | 
 |  |  | import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1; | 
 |  |  | import com.dy.common.mw.protocol.p206V1_0_0.downVos.Com97Vo; | 
 |  |  | import com.dy.common.mw.protocol.p206V202404.CodeV202404; | 
 |  |  | 
 |  |  | import com.dy.common.webUtil.BaseResponseUtils; | 
 |  |  | import com.dy.pipIrrGlobal.command.ComSupport; | 
 |  |  | import com.dy.pipIrrGlobal.command.dto.Param; | 
 |  |  | import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; | 
 |  |  | import com.dy.pipIrrRemote.common.CommandSv; | 
 |  |  | import com.dy.pipIrrRemote.common.dto.Addr; | 
 |  |  | import com.dy.pipIrrRemote.common.dto.DtoBase; | 
 |  |  | 
 |  |  | import org.springframework.http.MediaType; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.validation.BindingResult; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  | import org.springframework.web.bind.annotation.PostMapping; | 
 |  |  | import org.springframework.web.bind.annotation.RequestBody; | 
 |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
 |  |  | import org.springframework.web.bind.annotation.RestController; | 
 |  |  |  | 
 |  |  | import java.util.Objects; | 
 |  |  |  | 
 |  |  | 
 |  |  |             // 创建视图 | 
 |  |  |             ComCd10Vo param = new ComCd10Vo() ; | 
 |  |  |             param.controllerType = controllerType; | 
 |  |  |             param.projectNo =projectNo; | 
 |  |  |             param.projectNo = projectNo; | 
 |  |  |             param.rtuNewAddr = newRtuAddr; | 
 |  |  |  | 
 |  |  |             // 发送命令并处理请求结果及执行结果 | 
 |  |  |             Param po = new Param(); | 
 |  |  |             po.setComId(comId); | 
 |  |  |             po.setCommandCode(commandCode); | 
 |  |  |             po.setIntakeId(intakeId); | 
 |  |  |             po.setRtuAddr(rtuAddr); | 
 |  |  |             po.setProtocol(protocol); | 
 |  |  |             po.setParam(param); | 
 |  |  |             po.setRtuResultSendWebUrl(rtuResultSendWebUrl); | 
 |  |  |             po.setOperator(operator); | 
 |  |  |             return dealWithCommandResult(po); | 
 |  |  |             /** | 
 |  |  |              * 构造命令、发送命令并处理请求结果及执行结果 | 
 |  |  |              * 1 准备参数 | 
 |  |  |              * 2 调用公共方法 | 
 |  |  |              */ | 
 |  |  |             Param myParam = new Param(); | 
 |  |  |             myParam.setComId(comId); | 
 |  |  |             myParam.setCommandCode(commandCode); | 
 |  |  |             myParam.setCommandName(CodeV202404.getCodeName(commandCode)); | 
 |  |  |             myParam.setIntakeId(intakeId); | 
 |  |  |             myParam.setRtuAddr(rtuAddr); | 
 |  |  |             myParam.setProtocol(protocol); | 
 |  |  |             myParam.setParam(param); | 
 |  |  |             myParam.setRtuResultSendWebUrl(rtuResultSendWebUrl); | 
 |  |  |             myParam.setOperator(operator); | 
 |  |  |             return dealWithCommandResult(myParam); | 
 |  |  |         } else if(protocol.equals("p206V1_0_1")) { | 
 |  |  |             // 获取功能码 | 
 |  |  |             commandCode = CodeV1_0_1.cd_10; | 
 |  |  |  | 
 |  |  |             // 创建视图 | 
 |  |  |             Com97Vo param = new Com97Vo() ; | 
 |  |  |  | 
 |  |  |             // 构造命令 | 
 |  |  |             Command com = command(comId, commandCode, rtuAddr, protocol, rtuResultSendWebUrl, param); | 
 |  |  |  | 
 |  |  |             // 发送命令 | 
 |  |  |             JSONObject response_SendCom= (JSONObject) JSON.toJSON(sendCom2Mw(com)); | 
 |  |  |             if(response_SendCom != null && response_SendCom.getString("code").equals("0001")) { | 
 |  |  |                 //if(1 > 0) { | 
 |  |  |                 // 请求成功 | 
 |  |  |  | 
 |  |  |                 // 创建命令日志对象并添加到数据库中 | 
 |  |  |                 String commandName = CodeV1_0_1.getCodeName(commandCode); | 
 |  |  |                 RmCommandHistory rmCommandHistory = getComHistory(comId, commandCode, commandName, intakeId, rtuAddr, protocol, param, operator); | 
 |  |  |                 commandSv.insert(rmCommandHistory); | 
 |  |  |  | 
 |  |  |                 // 处理回调 | 
 |  |  |                 BaseResponse response_CallBack = dealWithCallBack(comId); | 
 |  |  |  | 
 |  |  |                 //回调失败 | 
 |  |  |                 if(!response_CallBack.getCode().equals("0001")) { | 
 |  |  |                     // 命令日志执行结果改为失败 | 
 |  |  |                     rmCommandHistory = new RmCommandHistory(); | 
 |  |  |                     rmCommandHistory.setId(comId); | 
 |  |  |                     rmCommandHistory.setResult((byte)0); | 
 |  |  |                     commandSv.updateCommandResult(rmCommandHistory); | 
 |  |  |                     return BaseResponseUtils.buildFail(response_CallBack.getMsg()); | 
 |  |  |                     //return BaseResponseUtils.buildFail(response_CallBack.getContent().toString()); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 // 回调成功,再判断执行是否成功 | 
 |  |  |                 JSONObject job_content = (JSONObject)JSON.toJSON(response_CallBack.getContent()); | 
 |  |  |                 System.out.println(job_content); | 
 |  |  |                 JSONObject job_subData = (JSONObject) job_content.getJSONObject("subData").getJSONObject("subData"); | 
 |  |  |                 System.out.println(job_subData); | 
 |  |  |                 Boolean dealResult = job_subData.getBoolean("success"); | 
 |  |  |                 if(!dealResult) { | 
 |  |  |                     return BaseResponseUtils.buildFail(response_CallBack.getContent().toString()); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 /** | 
 |  |  |                  * 执行成功,返回回调内容 | 
 |  |  |                  */ | 
 |  |  |                 Data myData = (Data)response_CallBack.getContent(); | 
 |  |  |                 return BaseResponseUtils.buildSuccess(myData) ; | 
 |  |  |             } else { | 
 |  |  |                 // 请求失败 | 
 |  |  |                 JSONObject job_param = response_SendCom.getJSONObject("content").getJSONObject("param"); | 
 |  |  |                 return BaseResponseUtils.buildFail(job_param.getString("message")); | 
 |  |  |             } | 
 |  |  |             return BaseResponseUtils.buildSuccess(""); | 
 |  |  |         } else { | 
 |  |  |             return BaseResponseUtils.buildFail("系统暂不支持该协议"); | 
 |  |  |         } | 
 |  |  | 
 |  |  |             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         String commandCode = CodeV202404.cd_97; | 
 |  |  |         //String commandCode = CodeV202404.cd_97; | 
 |  |  |         Long intakeId = po.getIntakeId(); | 
 |  |  |         Long operator = po.getOperator(); | 
 |  |  |         Long comId = idLongGenerator.generate(); | 
 |  |  |  | 
 |  |  |         // 获取系统参数 | 
 |  |  |         if(!setuped) { | 
 |  |  |             setUp(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 取水口ID换阀控器地址及通讯协议 | 
 |  |  |         //PrController prController = commandSv.getControllerByIntakeId(intakeId); | 
 |  |  |         //if(prController == null) { | 
 |  |  |         //    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); | 
 |  |  |         //} | 
 |  |  |         //String rtuAddr = prController.getRtuAddr(); | 
 |  |  |         //String protocol = prController.getProtocol(); | 
 |  |  |         String rtuAddr = ""; | 
 |  |  |         String protocol = ""; | 
 |  |  |         JSONObject job_rtu = getRtu(intakeId, null); | 
 |  |  |         if(job_rtu == null) { | 
 |  |  |             return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); | 
 |  |  |         } | 
 |  |  |         String rtuAddr = job_rtu.getString("rtuAddr"); | 
 |  |  |         String protocol = job_rtu.getString("protocol"); | 
 |  |  |  | 
 |  |  |         // 创建视图 | 
 |  |  |         ComCdXyVo param = new ComCdXyVo(); | 
 |  |  |         param.controllerType = controllerType; | 
 |  |  |         param.projectNo = projectNo; | 
 |  |  |         String commandCode = null; | 
 |  |  |         if(protocol.equals("p206V202404")) { | 
 |  |  |             // 获取功能码 | 
 |  |  |             commandCode = CodeV202404.cd_97; | 
 |  |  |  | 
 |  |  |         // 创建命令日志对象并添加到数据库中 | 
 |  |  |         RmCommandHistory rmCommandHistory = getComHistory(comId, commandCode, "",intakeId, rtuAddr, protocol, param, operator); | 
 |  |  |         comId = commandSv.insert(rmCommandHistory); | 
 |  |  |             // 创建视图 | 
 |  |  |             ComCdXyVo param = new ComCdXyVo(); | 
 |  |  |             param.controllerType = controllerType; | 
 |  |  |             param.projectNo = projectNo; | 
 |  |  |  | 
 |  |  |         // 构造命令 | 
 |  |  |         Command com = command(comId, commandCode,"", rtuAddr, protocol, param); | 
 |  |  |         return sendCom2Mw(com); | 
 |  |  |             /** | 
 |  |  |              * 构造命令、发送命令并处理请求结果及执行结果 | 
 |  |  |              * 1 准备参数 | 
 |  |  |              * 2 调用公共方法 | 
 |  |  |              */ | 
 |  |  |             Param myParam = new Param(); | 
 |  |  |             myParam.setComId(comId); | 
 |  |  |             myParam.setCommandCode(commandCode); | 
 |  |  |             myParam.setCommandName(CodeV202404.getCodeName(commandCode)); | 
 |  |  |             myParam.setIntakeId(intakeId); | 
 |  |  |             myParam.setRtuAddr(rtuAddr); | 
 |  |  |             myParam.setProtocol(protocol); | 
 |  |  |             myParam.setParam(param); | 
 |  |  |             myParam.setRtuResultSendWebUrl(rtuResultSendWebUrl); | 
 |  |  |             myParam.setOperator(operator); | 
 |  |  |             return dealWithCommandResult(myParam); | 
 |  |  |         } else if(protocol.equals("p206V1_0_1")) { | 
 |  |  |             // 获取功能码 | 
 |  |  |             commandCode = CodeV1_0_1.cd_10; | 
 |  |  |  | 
 |  |  |             // 创建视图 | 
 |  |  |             Com97Vo param = new Com97Vo() ; | 
 |  |  |             return BaseResponseUtils.buildSuccess(""); | 
 |  |  |         } else { | 
 |  |  |             return BaseResponseUtils.buildFail("系统暂不支持该协议"); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |