From 53f4e9e2da4325b112d8e921502dddac3f0632cb Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期二, 11 六月 2024 20:11:39 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java | 739 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 681 insertions(+), 58 deletions(-) diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java index e986f2e..3d9cbf5 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java @@ -3,16 +3,30 @@ 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.p206V1_0_0.downVos.Com98Vo; +import com.dy.common.mw.protocol.p206V202404.CodeV202404; +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; -import com.dy.common.webUtil.ResultCodeMsg; -import com.dy.pipIrrRemote.utils.RestTemplateUtils; -import com.dy.pipIrrRemote.valve.dto.DTOValve; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; +import com.dy.pipIrrGlobal.command.ComSupport; +import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; +import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; +import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard; +import com.dy.pipIrrGlobal.voRm.VoUnclosedParam; +import com.dy.pipIrrGlobal.voRm.VoUnclosedValve; +import com.dy.pipIrrGlobal.voSe.VoVirtualCard; +import com.dy.pipIrrRemote.common.CommandSv; +import com.dy.pipIrrRemote.common.dto.DtoBase; +import com.dy.pipIrrRemote.common.dto.ValveClose; +import com.dy.pipIrrRemote.common.dto.ValveOpen; +import com.dy.pipIrrRemote.common.enums.LastOperateENUM; +import com.dy.pipIrrRemote.result.RemoteResultCode; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -22,13 +36,10 @@ import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; -import java.util.HashMap; -import java.util.Map; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.List; import java.util.Objects; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; /** * @author ZhuBaoMin @@ -38,71 +49,683 @@ */ @Slf4j -@Tag(name = "鍒嗘按鎴跨鐞�", description = "鍒嗘按鎴挎搷浣�") +@Tag(name = "骞冲彴闃�鎺у櫒鎺у埗", description = "骞冲彴闃�鎺у櫒鎺у埗") @RestController @RequestMapping(path="valve") @RequiredArgsConstructor -public class ValveCtrl { - private final RestTemplateUtils restTemplateUtils; - - private CompletableFuture<String> futureValue = new CompletableFuture<>(); +public class ValveCtrl extends ComSupport { + private final CommandSv commandSv; + private final SeVirtualCardMapper seVirtualCardMapper; + private final IDLongGenerator idLongGenerator; + private String rtuResultSendWebUrl = "http://127.0.0.1:8081/remote/comRes/receive" ; /** - * 杩滅▼寮�鍏抽榾 - * @param po 寮�鍏抽榾浼犲叆瀵硅薄 + * 骞冲彴杩滅▼寮�闃� + * @param valve * @param bindingResult * @return */ - @Operation(summary = "杩滅▼寮�鍏抽榾", description = "杩滅▼寮�鍏抽榾") - @ApiResponses(value = { - @ApiResponse( - responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, - description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", - content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, - schema = @Schema(implementation = Boolean.class))} - ) - }) - @PostMapping(path = "operate", consumes = MediaType.APPLICATION_JSON_VALUE) + @PostMapping(path = "open", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() - public BaseResponse<Boolean> open(@RequestBody @Valid DTOValve po, BindingResult bindingResult) throws ExecutionException, InterruptedException { + public BaseResponse<Boolean> open(@RequestBody @Valid ValveOpen valve, BindingResult bindingResult) { + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyMMddHHmmss"); if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } - String a = null; - try { - a = futureValue.get(10, TimeUnit.SECONDS); - } catch (TimeoutException e) { - return BaseResponseUtils.buildFail("1鍒嗛挓鍚庡幓鏌ョ湅缁撴灉"); + Long intakeId = valve.getIntakeId(); + Long vcId = valve.getVcId(); + Long operator = valve.getOperator(); + Long comId = idLongGenerator.generate(); + + /** + * 濡傛灉鍐滄埛閫夋嫨浜嗚櫄鎷熷崱锛屽垯浣跨敤璇ヨ櫄鎷熷崱 + * 濡傛灉鍐滄埛鏈�夋嫨铏氭嫙鍗★紝鍒欐牴鎹彇姘村彛ID鑾峰彇涓庝箣缁戝畾鐨勮櫄鎷熷崱 + * 濡傛灉鍙栨按鍙f病鏈変笌涔嬬粦瀹氱殑铏氭嫙鍗★紝鍒欐彁绀哄啘鎴烽�夋嫨涓�寮犺櫄鎷熷崱 + */ + if(vcId == null) { + vcId = commandSv.getVcIdByIntakeId(intakeId); + if(vcId == null) { + return BaseResponseUtils.buildFail(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); + } } - futureValue = new CompletableFuture<>(); - Map<String, Object> param = new HashMap<>(); - param.put("controllerType", "01"); - param.put("projectNo", 100); - param.put("rtuNewAddr", "202405061656120001"); + // 鑾峰彇绯荤粺鍙傛暟 + if(!setuped) { + setUp(); + } - Map<String, Object> postParams = new HashMap<>(); - postParams.put("id", 2024050616450001L); - postParams.put("protocol", "p1"); - postParams.put("rtuAddr", "20001"); - postParams.put("type", "outerCommand"); - postParams.put("code", "10"); - postParams.put("noRtMwDealRes", false); - postParams.put("rtuResultSendWebUrl", "127.0.0.1/remote/"); - postParams.put("param", param); + // 铏氭嫙鍗D鎹㈣櫄鎷熷崱瀵硅薄 + VoVirtualCard vc = commandSv.getVcById(vcId); + if(vc == null) { + return BaseResponseUtils.buildFail(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); + } + if(vc.getInUse() == 1) { + return BaseResponseUtils.buildFail(RemoteResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage()); + } - Map<String, String> headerParams = new HashMap<>(); + // 鑾峰彇姘翠环 + Double waterPrice = commandSv.getPrice(); - JSONObject job_result = restTemplateUtils.post("http://localhost:8070/accMw/com/send", JSON.toJSONString(postParams), headerParams); + // 鍙栨按鍙D鎹㈤榾鎺у櫒鍦板潃鍙婇�氳鍗忚 + JSONObject job_rtu = getRtu(intakeId, null); + if(job_rtu == null) { + return BaseResponseUtils.buildError(RemoteResultCode.RTU_NOT_EXIST.getMessage()); + } + String rtuAddr = job_rtu.getString("rtuAddr"); + String protocol = job_rtu.getString("protocol"); - return BaseResponseUtils.buildSuccess(a) ; + // 鐢熸垚璁㈠崟鍙� + String orderNo = generateOrderNo(); + + String commandCode = null; + if(protocol.equals("p206V202404")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV202404.cd_92; + + // 鍒涘缓瑙嗗浘 + ComCd92_A2Vo param = new ComCd92_A2Vo(); + param.controllerType = controllerType; + param.projectNo = projectNo; + param.icCardNo = vc.getVcNum(); + param.waterRemain = 0.0; + param.moneyRemain = vc.getMoney(); + param.waterPrice = waterPrice; + param.elePrice = 0.0; + param.orderNo = orderNo; + + // 鏋勯�犲懡浠� + 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 = CodeV202404.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()); + } + + /** + * 鎵ц鎴愬姛 + * 鏇存敼铏氭嫙鍗$姸鎬侊細鏄惁浣跨敤涓�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂� + */ +// SeVirtualCard virtualCard = new SeVirtualCard(); +// virtualCard.setId(vcId); +// virtualCard.setInUse((byte) 1); +// virtualCard.setIntakeId(intakeId); +// virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode()); +// virtualCard.setLastOperateTime(new Date()); +// seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard); + + // 鍥炶皟杩斿洖鐨勫唴瀹� + //Data myData = (Data)response_CallBack.getContent(); + //return BaseResponseUtils.buildSuccess(myData); + + JSONObject job_response = new JSONObject(); + job_response.put("rtuAddr", rtuAddr); + job_response.put("vcNum", vc.getVcNum()); + job_response.put("orderNo", orderNo); + //job_response.put("operator", operator); + return BaseResponseUtils.buildSuccess(job_response); + } else { + // 璇锋眰澶辫触 + JSONObject job_param = response_SendCom.getJSONObject("content").getJSONObject("param"); + return BaseResponseUtils.buildFail(job_param.getString("message")); + } + } else if(protocol.equals("p206V1_0_1")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV1_0_1.cd_92; + + // 鍒涘缓瑙嗗浘 + Com97Vo param = new Com97Vo() ; + param.icCardNo = vc.getVcNum(); + param.moneyRemain = vc.getMoney(); + param.waterPrice = waterPrice; + param.orderNo = orderNo; + + // 鏋勯�犲懡浠� + 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.getContent().toString()); + } + + // 鍥炶皟瓒呮椂 + if(response_CallBack.getContent().toString().equals(RemoteResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage())) { + /** + * 鍥炶皟瓒呮椂锛屾殏鏃惰涓烘墽琛屽け璐� + * 鍛戒护缃负澶辫触 + * 铏氭嫙鍗′緷鏃т繚鎸佷娇鐢ㄤ腑鐨勭姸鎬� + * 涓嶈繑鍥炲叧闃�鍙傛暟 + */ + + rmCommandHistory = new RmCommandHistory(); + rmCommandHistory.setId(comId); + rmCommandHistory.setResult((byte)0); + commandSv.updateCommandResult(rmCommandHistory); + + //SeVirtualCard virtualCard = new SeVirtualCard(); + //virtualCard.setId(vcId); + //virtualCard.setInUse((byte) 1); + //virtualCard.setIntakeId(intakeId); + //virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode()); + //virtualCard.setLastOperateTime(new Date()); + //seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard); + + //JSONObject job_response = new JSONObject(); + //job_response.put("message", RemoteResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage()); + //job_response.put("rtuAddr", rtuAddr); + //job_response.put("vcNum", vc.getVcNum()); + //job_response.put("orderNo", orderNo); + //return BaseResponseUtils.buildSuccess(job_response); + return BaseResponseUtils.buildFail(RemoteResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage()); + + } + + // 鍥炶皟鎴愬姛锛屽啀鍒ゆ柇鎵ц鏄惁鎴愬姛 + 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()); + } + + /** + * 鎵ц鎴愬姛 + * 鏇存敼铏氭嫙鍗$姸鎬侊細鏄惁浣跨敤涓�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂� + */ + SeVirtualCard virtualCard = new SeVirtualCard(); + virtualCard.setId(vcId); + virtualCard.setInUse((byte) 1); + virtualCard.setIntakeId(intakeId); + virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode()); + virtualCard.setLastOperateTime(new Date()); + seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard); + + // 鍥炶皟杩斿洖鐨勫唴瀹� + //Data myData = (Data)response_CallBack.getContent(); + //return BaseResponseUtils.buildSuccess(myData) ; + + JSONObject job_response = new JSONObject(); + job_response.put("message", "ok"); + job_response.put("rtuAddr", rtuAddr); + job_response.put("vcNum", vc.getVcNum()); + job_response.put("orderNo", orderNo); + //job_response.put("operator", operator); + return BaseResponseUtils.buildSuccess(job_response); + + } else { + // 璇锋眰澶辫触 + JSONObject job_param = response_SendCom.getJSONObject("content").getJSONObject("param"); + return BaseResponseUtils.buildFail(job_param.getString("message")); + } + } else { + return BaseResponseUtils.buildFail("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } } - @GetMapping("/setValue") - public String setValue(String name) { - futureValue.complete(name); - return "Value set"; + /** + * 骞冲彴杩滅▼鍏抽榾_鍙傛暟妯″紡 + * @param valve + * @param bindingResult + * @return + */ + @PostMapping(path = "close", consumes = MediaType.APPLICATION_JSON_VALUE) + @Transactional(rollbackFor = Exception.class) + @SsoAop() + public BaseResponse<Boolean> close(@RequestBody @Valid ValveClose valve, BindingResult bindingResult) { + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyMMddHHmmss"); + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + String rtuAddr = valve.getRtuAddr(); + String vcNum = valve.getVcNum(); + String orderNo = valve.getOrderNo(); + Long operator = valve.getOperator(); + Long comId = idLongGenerator.generate(); + + // 鑾峰彇绯荤粺鍙傛暟 + if(!setuped) { + setUp(); + } + + // 闃�鎺у櫒鍦板潃鎹㈠彇姘村彛ID鍜岄�氳鍗忚 + JSONObject job_rtu = getRtu(null, rtuAddr); + if(job_rtu == null) { + return BaseResponseUtils.buildError(RemoteResultCode.RTU_NOT_EXIST.getMessage()); + } + Long intakeId = job_rtu.getLong("intakeId"); + String protocol = job_rtu.getString("protocol"); + + String commandCode = null; + if(protocol.equals("p206V202404")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV202404.cd_93; + + // 鍒涘缓瑙嗗浘 + ComCd93_A3Vo param = new ComCd93_A3Vo(); + param.controllerType = controllerType; + param.projectNo = projectNo; + param.icCardNo = vcNum; + param.orderNo = orderNo; + + // 鏋勯�犲懡浠� + 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")) { + // 璇锋眰鎴愬姛 + + // 鍒涘缓鍛戒护鏃ュ織瀵硅薄骞舵坊鍔犲埌鏁版嵁搴撲腑 + String commandName = CodeV202404.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.buildError(WechatResultCode.GET_RESULT_ERROR.getMessage()); + } + + // 鍥炶皟鎴愬姛锛屽啀鍒ゆ柇鎵ц鏄惁鎴愬姛 + 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()); + } + + /** + * 鎵ц鎴愬姛 + * 鏇存敼铏氭嫙鍗$姸鎬侊細鏄惁浣跨敤涓�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂� + */ + //SeVirtualCard virtualCard = seVirtualCardMapper.getVcCardByNum(vcNum); + //virtualCard.setInUse((byte) 0); + //virtualCard.setIntakeId(null); + //virtualCard.setLastOperate(LastOperateENUM.CLOSE_VALVE.getCode()); + //virtualCard.setLastOperateTime(new Date()); + //seVirtualCardMapper.updateByPrimaryKey(virtualCard); + + // 鍥炶皟杩斿洖鐨勫唴瀹� + 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")); + } + } else if(protocol.equals("p206V1_0_1")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV1_0_1.cd_93; + + // 鍒涘缓瑙嗗浘 + Com98Vo param = new Com98Vo() ; + param.icCardNo = vcNum; + param.orderNo = orderNo; + + // 鏋勯�犲懡浠� + 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.getContent().toString()); + } + + // 鍥炶皟瓒呮椂 + if(response_CallBack.getContent().toString().equals(RemoteResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage())) { + /** + * 鍥炶皟瓒呮椂锛屾殏鏃惰涓烘墽琛屽け璐� + * 鍛戒护缃负澶辫触 + * 铏氭嫙鍗′緷鏃т繚鎸佷娇鐢ㄤ腑鐨勭姸鎬� + */ + + rmCommandHistory = new RmCommandHistory(); + rmCommandHistory.setId(comId); + rmCommandHistory.setResult((byte)0); + commandSv.updateCommandResult(rmCommandHistory); + + + //SeVirtualCard virtualCard = seVirtualCardMapper.getVcCardByNum(vcNum); + //virtualCard.setInUse((byte) 0); + //virtualCard.setIntakeId(null); + //virtualCard.setLastOperate(LastOperateENUM.CLOSE_VALVE.getCode()); + //virtualCard.setLastOperateTime(new Date()); + //seVirtualCardMapper.updateByPrimaryKey(virtualCard); + return BaseResponseUtils.buildFail(RemoteResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage()); + } + + // 鍥炶皟鎴愬姛锛屽啀鍒ゆ柇鎵ц鏄惁鎴愬姛 + 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()); + } + + /** + * 鎵ц鎴愬姛 + * 鏇存敼铏氭嫙鍗$姸鎬侊細鏄惁浣跨敤涓�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂� + */ + SeVirtualCard virtualCard = seVirtualCardMapper.getVcCardByNum(vcNum); + virtualCard.setInUse((byte) 0); + virtualCard.setIntakeId(null); + virtualCard.setLastOperate(LastOperateENUM.CLOSE_VALVE.getCode()); + virtualCard.setLastOperateTime(new Date()); + seVirtualCardMapper.updateByPrimaryKey(virtualCard); + + // 鍥炶皟杩斿洖鐨勫唴瀹� + 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")); + } + } else { + return BaseResponseUtils.buildFail("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } + } + + /** + * 骞冲彴杩滅▼鍏抽榾_鍙栨按鍙fā寮� + * @param dtoBase + * @param bindingResult + * @return + */ + @PostMapping(path = "close_intake", consumes = MediaType.APPLICATION_JSON_VALUE) + @Transactional(rollbackFor = Exception.class) + @SsoAop() + public BaseResponse<Boolean> closeByIntake(@RequestBody @Valid DtoBase dtoBase, BindingResult bindingResult) { + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyMMddHHmmss"); + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Long intakeId = dtoBase.getIntakeId(); + Long operator = dtoBase.getOperator(); + + VoUnclosedParam voUnclosedParam = commandSv.getUncloseParam(intakeId); + if(voUnclosedParam == null) { + return BaseResponseUtils.buildSuccess(RemoteResultCode.VALVE_CLOSED.getMessage()); + } + String rtuAddr = voUnclosedParam.getRtuAddr(); + String vcNum = voUnclosedParam.getVcNum(); + String orderNo = voUnclosedParam.getOrderNo(); + Long comId = idLongGenerator.generate(); + + // 鑾峰彇绯荤粺鍙傛暟 + if(!setuped) { + setUp(); + } + + // 闃�鎺у櫒鍦板潃鎹㈠彇姘村彛ID鍜岄�氳鍗忚 + JSONObject job_rtu = getRtu(null, rtuAddr); + if(job_rtu == null) { + return BaseResponseUtils.buildError(RemoteResultCode.RTU_NOT_EXIST.getMessage()); + } + //Long intakeId = job_rtu.getLong("intakeId"); + String protocol = job_rtu.getString("protocol"); + + String commandCode = null; + if(protocol.equals("p206V202404")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV202404.cd_93; + + // 鍒涘缓瑙嗗浘 + ComCd93_A3Vo param = new ComCd93_A3Vo(); + param.controllerType = controllerType; + param.projectNo = projectNo; + param.icCardNo = vcNum; + param.orderNo = orderNo; + + // 鏋勯�犲懡浠� + 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")) { + // 璇锋眰鎴愬姛 + + // 鍒涘缓鍛戒护鏃ュ織瀵硅薄骞舵坊鍔犲埌鏁版嵁搴撲腑 + String commandName = CodeV202404.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.buildError(WechatResultCode.GET_RESULT_ERROR.getMessage()); + } + + // 鍥炶皟鎴愬姛锛屽啀鍒ゆ柇鎵ц鏄惁鎴愬姛 + 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()); + } + + /** + * 鎵ц鎴愬姛 + * 鏇存敼铏氭嫙鍗$姸鎬侊細鏄惁浣跨敤涓�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂� + */ + //Long vcId = seVirtualCardMapper.getVcIdByNum(vcNum); + //SeVirtualCard virtualCard = new SeVirtualCard(); + //virtualCard.setId(vcId); + //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) ; + } else { + // 璇锋眰澶辫触 + JSONObject job_param = response_SendCom.getJSONObject("content").getJSONObject("param"); + return BaseResponseUtils.buildFail(job_param.getString("message")); + } + } else if(protocol.equals("p206V1_0_1")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV1_0_1.cd_93; + + // 鍒涘缓瑙嗗浘 + Com98Vo param = new Com98Vo() ; + param.icCardNo = vcNum; + param.orderNo = orderNo; + + // 鏋勯�犲懡浠� + 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.getContent().toString()); + } + + // 鍥炶皟瓒呮椂 + if(response_CallBack.getContent().toString().equals(RemoteResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage())) { + /** + * 鍥炶皟瓒呮椂锛屾殏鏃惰涓烘墽琛屽け璐� + * 鍛戒护缃负澶辫触 + * 铏氭嫙鍗′緷鏃т繚鎸佷娇鐢ㄤ腑鐨勭姸鎬� + */ + + rmCommandHistory = new RmCommandHistory(); + rmCommandHistory.setId(comId); + rmCommandHistory.setResult((byte)0); + commandSv.updateCommandResult(rmCommandHistory); + + //Long vcId = seVirtualCardMapper.getVcIdByNum(vcNum); + //SeVirtualCard virtualCard = new SeVirtualCard(); + //virtualCard.setId(vcId); + //virtualCard.setInUse((byte) 0); + //virtualCard.setLastOperate(LastOperateENUM.OPEN_VALVE.getCode()); + //virtualCard.setLastOperateTime(new Date()); + //seVirtualCardMapper.updateByPrimaryKeySelective(virtualCard); + return BaseResponseUtils.buildFail(RemoteResultCode.GET_RESULT_IN_ONE_MINUTE.getMessage()); + } + + // 鍥炶皟鎴愬姛锛屽啀鍒ゆ柇鎵ц鏄惁鎴愬姛 + 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()); + } + + /** + * 鎵ц鎴愬姛 + * 鏇存敼铏氭嫙鍗$姸鎬侊細鏄惁浣跨敤涓�佹渶鍚庢搷浣溿�佹渶鍚庢搷浣滄椂闂� + */ + Long vcId = seVirtualCardMapper.getVcIdByNum(vcNum); + SeVirtualCard virtualCard = new SeVirtualCard(); + virtualCard.setId(vcId); + 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) ; + } else { + // 璇锋眰澶辫触 + JSONObject job_param = response_SendCom.getJSONObject("content").getJSONObject("param"); + return BaseResponseUtils.buildFail(job_param.getString("message")); + } + } else { + return BaseResponseUtils.buildFail("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } + } + + /** + * 鏍规嵁鎿嶄綔鍛業D鑾峰彇鏈叧闃�璁板綍 + * @param operator + * @return + */ + @GetMapping(path = "/get") + @SsoAop() + public BaseResponse<List<VoUnclosedValve>> getUnclosedValves(@RequestParam Long operator){ + try { + List<VoUnclosedValve> res = commandSv.getUnclosedValves(operator); + return BaseResponseUtils.buildSuccess(res); + } catch (Exception e) { + log.error("鑾峰彇鏈叧闃�璁板綍寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()) ; + } } } -- Gitblit v1.8.0