|  |  |  | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.command.enums.LastOperateENUM; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.command.result.CommandResultCode; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.daoBa.BaSettingsMapper; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.daoIr.IrIntakeOperateMapper; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.daoPr.PrCommonIntakesMapper; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.daoPr.PrControllerMapper; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; | 
|---|
|  |  |  | 
|---|
|  |  |  | import java.text.SimpleDateFormat; | 
|---|
|  |  |  | import java.time.LocalDateTime; | 
|---|
|  |  |  | import java.time.format.DateTimeFormatter; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  | import java.util.Random; | 
|---|
|  |  |  | import java.util.concurrent.CompletableFuture; | 
|---|
|  |  |  | import java.util.concurrent.ExecutionException; | 
|---|
|  |  |  | import java.util.concurrent.TimeUnit; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | protected String commandTypeOuter = CommandType.outerCommand; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 存储实例化的 CompletableFuture<Data> 对象 | 
|---|
|  |  |  | protected static Map<Long, Object> features = new HashMap<>(); | 
|---|
|  |  |  | //protected static Boolean setuped = false; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RestTemplate restTemplate; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private PrCommonIntakesMapper prCommonIntakesMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private IrIntakeOperateMapper irIntakeOperateMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static ComSupport comSupport; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | protected BaseResponse<Data> dealWithCallBack(Long comId, Command com) { | 
|---|
|  |  |  | CompletableFuture<JSONObject> feature = new CompletableFuture<>(); | 
|---|
|  |  |  | features.put(comId, feature); | 
|---|
|  |  |  | ComResultWait.put(comId, feature); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 发送命令 | 
|---|
|  |  |  | JSONObject response_SendCom = (JSONObject) JSON.toJSON(sendCom2Mw(com)); | 
|---|
|  |  |  | if (response_SendCom == null || !response_SendCom.getString("code").equals("0001")) { | 
|---|
|  |  |  | // 请求失败,RTU未上线,清除feature | 
|---|
|  |  |  | features.remove(comId); | 
|---|
|  |  |  | ComResultWait.remove(comId); | 
|---|
|  |  |  | JSONObject job_param = response_SendCom.getJSONObject("content").getJSONObject("param"); | 
|---|
|  |  |  | return BaseResponseUtils.buildErrorMsg(job_param.getString("message")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JSONObject resultData = feature.get(180, TimeUnit.SECONDS); | 
|---|
|  |  |  | features.remove(comId); | 
|---|
|  |  |  | ComResultWait.remove(comId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Long commandId = resultData.getLong("commandId"); | 
|---|
|  |  |  | if (commandId.equals(comId)) { | 
|---|
|  |  |  | 
|---|
|  |  |  | Object param = po.getParam(); | 
|---|
|  |  |  | String rtuResultSendWebUrl = po.getRtuResultSendWebUrl(); | 
|---|
|  |  |  | Long operator = po.getOperator(); | 
|---|
|  |  |  | Byte openType = po.getOpenType(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 构造命令 | 
|---|
|  |  |  | Command com = command(comId, commandCode, rtuAddr, protocol, rtuResultSendWebUrl, param); | 
|---|
|  |  |  | 
|---|
|  |  |  | rmCommandHistory.setResult((byte) 0); | 
|---|
|  |  |  | rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); | 
|---|
|  |  |  | //return BaseResponseUtils.buildErrorMsg(response_CallBack.getContent().toString()); | 
|---|
|  |  |  | irIntakeOperateMapper.updateByCommandId(comId, (byte)2, response_CallBack.getMsg()); | 
|---|
|  |  |  | return BaseResponseUtils.buildErrorMsg(response_CallBack.getMsg()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | rmCommandHistory.setComId(comId); | 
|---|
|  |  |  | rmCommandHistory.setResult((byte) 0); | 
|---|
|  |  |  | rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); | 
|---|
|  |  |  | irIntakeOperateMapper.updateByCommandId(comId, (byte)2, "回调超时"); | 
|---|
|  |  |  | return BaseResponseUtils.buildErrorMsg(CommandResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | rmCommandHistory.setResult((byte) 0); | 
|---|
|  |  |  | rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(openType != null && openType == 1 ) { | 
|---|
|  |  |  | irIntakeOperateMapper.updateByCommandId(comId, (byte)2, "开阀失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 开阀失败则解除占用,关阀失败则占用 | 
|---|
|  |  |  | if (comType != null) { | 
|---|
|  |  |  | SeVirtualCard virtualCard = new SeVirtualCard(); | 
|---|
|  |  |  | 
|---|
|  |  |  | rmCommandHistory.setResult((byte) 1); | 
|---|
|  |  |  | rmCommandHistoryMapper.updateByPrimaryKeySelective(rmCommandHistory); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(openType != null && openType == 1) { | 
|---|
|  |  |  | irIntakeOperateMapper.updateByCommandId(comId, (byte)1, null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 开阀成功则占用,关阀成功不占用 | 
|---|
|  |  |  | if (comType != null) { | 
|---|
|  |  |  | SeVirtualCard virtualCard = new SeVirtualCard(); | 
|---|