From 5b0da3c6caf89fdc59b8a4f1d4de44f85cd331c7 Mon Sep 17 00:00:00 2001 From: wuzeyu <1223318623@qq.com> Date: 星期五, 26 七月 2024 15:49:49 +0800 Subject: [PATCH] 修改检测模块八个查询接口请求方式body改为param,漏损两个查询接口修改排序规则 --- pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java | 732 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 671 insertions(+), 61 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..c0d871e 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 @@ -1,34 +1,46 @@ package com.dy.pipIrrRemote.valve; -import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.dy.common.aop.SsoAop; +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.p206V1_0_0.downVos.Com99Vo; +import com.dy.common.mw.protocol.p206V1_0_0.downVos.ComA0Vo; +import com.dy.common.mw.protocol.p206V202404.CodeV202404; +import com.dy.common.mw.protocol.p206V202404.downVos.ComCd15Vo; +import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo; +import com.dy.common.mw.protocol.p206V202404.downVos.ComCd93_A3Vo; +import com.dy.common.mw.protocol.p206V202404.downVos.ComCd9CVo; +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.command.dto.Param; +import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper; +import com.dy.pipIrrGlobal.pojoSe.SeClientCard; +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.*; +import com.dy.pipIrrRemote.result.RemoteResultCode; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; import org.springframework.http.MediaType; import org.springframework.transaction.annotation.Transactional; 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.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; +import java.util.Optional; /** * @author ZhuBaoMin @@ -38,71 +50,669 @@ */ @Slf4j -@Tag(name = "鍒嗘按鎴跨鐞�", description = "鍒嗘按鎴挎搷浣�") +@Tag(name = "骞冲彴闃�鎺у櫒鎺у埗", description = "骞冲彴闃�鎺у櫒鎺у埗") @RestController @RequestMapping(path="valve") -@RequiredArgsConstructor -public class ValveCtrl { - private final RestTemplateUtils restTemplateUtils; +//@RequiredArgsConstructor +public class ValveCtrl extends ComSupport { + private final CommandSv commandSv; + private final SeVirtualCardMapper seVirtualCardMapper; + private final IDLongGenerator idLongGenerator; - private CompletableFuture<String> futureValue = new CompletableFuture<>(); + @Value("${mw.rtuCallbackUrl_rm}") + private String rtuCallbackUrl_rm; /** - * 杩滅▼寮�鍏抽榾 - * @param po 寮�鍏抽榾浼犲叆瀵硅薄 + * pro_mw锛氬睘鎬� + * tag浠庢帶鍒跺櫒涓幏鍙� + * key_mw锛歶rl鐨刱ey + */ + private Environment env = null; + private String pro_mw = "mw"; + private String key_mw = "comSendUrl"; + + @Autowired + public ValveCtrl(CommandSv commandSv, SeVirtualCardMapper seVirtualCardMapper, IDLongGenerator idLongGenerator, Environment env) { + this.commandSv = commandSv; + this.seVirtualCardMapper = seVirtualCardMapper; + this.idLongGenerator = idLongGenerator; + this.env = env; + } + + /** + * 骞冲彴杩滅▼寮�闃� + * @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.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + 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.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); + } + } + + // 铏氭嫙鍗D鎹㈣櫄鎷熷崱瀵硅薄 + VoVirtualCard vc = commandSv.getVcById(vcId); + if(vc == null) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); + } + + //鍢夊唱鍏抽」鐩櫄鎷熷崱涓嶆墸璐癸紝涓嶅仛浣跨敤涓垽鏂� + //if(vc.getInUse() == 1) { + // return BaseResponseUtils.buildErrorMsg(RemoteResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage()); + //} + + // 鑾峰彇姘翠环 + Double waterPrice = commandSv.getPrice(); + + // 鍙栨按鍙D鎹㈤榾鎺у櫒鍦板潃鍙婇�氳鍗忚 + 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"); + String orgTag = job_rtu.getString("orgTag"); + comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); + + // 鐢熸垚璁㈠崟鍙� + 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().toString(); + param.waterRemain = 0.0; + param.moneyRemain = vc.getMoney(); + param.waterPrice = waterPrice; + param.elePrice = 0.0; + param.orderNo = orderNo; + + /** + * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + * 1 鍑嗗鍙傛暟 + * 2 璋冪敤鍏叡鏂规硶 + */ + Param myParam = new Param(); + myParam.setComId(comId); + myParam.setComType((byte)1); + 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_rm); + myParam.setOperator(operator); + return dealWithCommandResult(myParam); + } else if(protocol.equals("p206V1_0_1")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV1_0_1.cd_92; + + // 鍒涘缓瑙嗗浘 + Com97Vo param = new Com97Vo() ; + param.icCardNo = vc.getVcNum().toString(); + param.moneyRemain = vc.getMoney(); + param.waterPrice = waterPrice; + param.orderNo = orderNo; + + /** + * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + * 1 鍑嗗鍙傛暟 + * 2 璋冪敤鍏叡鏂规硶 + */ + Param myParam = new Param(); + myParam.setComId(comId); + myParam.setComType((byte)1); + 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_rm); + myParam.setOperator(operator); + return dealWithCommandResult(myParam); + } else { + return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } + } + + /** + * 骞冲彴杩滅▼鍏抽榾_鍙栨按鍙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) { + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Long intakeId = dtoBase.getIntakeId(); + Long operator = dtoBase.getOperator(); + + VoUnclosedParam voUnclosedParam = null; + try { + voUnclosedParam = commandSv.getUncloseParam(intakeId); + }catch (Exception e) { + return BaseResponseUtils.buildErrorMsg("鑾峰彇鏈叧闃�淇℃伅閿欒"); + } + + if(voUnclosedParam == null) { + return BaseResponseUtils.buildSuccess(RemoteResultCode.VALVE_CLOSED.getMessage()); + } + String rtuAddr = voUnclosedParam.getRtuAddr(); + String vcNum = voUnclosedParam.getVcNum(); + Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L); + String orderNo = voUnclosedParam.getOrderNo(); + Long comId = idLongGenerator.generate(); + + // 闃�鎺у櫒鍦板潃鎹㈠彇姘村彛ID鍜岄�氳鍗忚 + JSONObject job_rtu = getRtu(null, rtuAddr); + if(job_rtu == null) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); + } + //Long intakeId = job_rtu.getLong("intakeId"); + String protocol = job_rtu.getString("protocol"); + String orgTag = job_rtu.getString("orgTag"); + comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); + + 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; + + /** + * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + * 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_rm); + myParam.setOperator(operator); + return dealWithCommandResult(myParam); + } else if(protocol.equals("p206V1_0_1")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV1_0_1.cd_93; + + // 鍒涘缓瑙嗗浘 + 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(CodeV202404.getCodeName(commandCode)); + myParam.setIntakeId(intakeId); + myParam.setRtuAddr(rtuAddr); + myParam.setProtocol(protocol); + myParam.setVcId(vcId); + myParam.setParam(param); + myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm); + myParam.setOperator(operator); + return dealWithCommandResult(myParam); + } else { + return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } + } + + /** + * 瀹氭椂鍏抽榾 + * @param automaticClose + * @param bindingResult + * @return + */ + @PostMapping(path = "timed_close", consumes = MediaType.APPLICATION_JSON_VALUE) + @Transactional(rollbackFor = Exception.class) + @SsoAop() + public BaseResponse<Boolean> timedClose(@RequestBody @Valid AutomaticClose automaticClose, BindingResult bindingResult) { + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Long intakeId = automaticClose.getIntakeId(); + String rtuAddr = automaticClose.getRtuAddr(); + String vcNum = automaticClose.getVcNum(); + String orderNo = automaticClose.getOrderNo(); + Integer minutes = automaticClose.getMinutes(); + Long operator = automaticClose.getOperator(); + + Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L); + Long comId = idLongGenerator.generate(); + + // 铏氭嫙鍗D鎹㈣櫄鎷熷崱瀵硅薄 + VoVirtualCard vc = commandSv.getVcById(vcId); + if (vc == null) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); + } + Double moneyRemain = vc.getMoney(); + + // 鑾峰彇姘翠环 + Double waterPrice = commandSv.getPrice(); + + // 闃�鎺у櫒鍦板潃鎹㈠彇姘村彛ID鍜岄�氳鍗忚 + JSONObject job_rtu = getRtu(null, rtuAddr); + if(job_rtu == null) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); + } + String protocol = job_rtu.getString("protocol"); + String orgTag = job_rtu.getString("orgTag"); + comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); + + String commandCode = null; + if(protocol.equals("p206V202404")) { + return BaseResponseUtils.buildSuccess(); + } else if(protocol.equals("p206V1_0_1")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV1_0_1.cd_99; + + // 鍒涘缓瑙嗗浘 + Com99Vo param = new Com99Vo(); + param.setIcCardNo(vcNum); + param.setMoneyRemain(moneyRemain); + param.setWaterPrice(waterPrice); + param.setMinutes(minutes); + param.setOrderNo(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_rm); + myParam.setOperator(operator); + return dealWithCommandResult(myParam); + } else { + return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } + } + + /** + * 瀹氶噺鍏抽榾 + * @param automaticClose + * @param bindingResult + * @return + */ + @PostMapping(path = "quantify_close", consumes = MediaType.APPLICATION_JSON_VALUE) + @Transactional(rollbackFor = Exception.class) + @SsoAop() + public BaseResponse<Boolean> quantifyClose(@RequestBody @Valid AutomaticClose automaticClose, BindingResult bindingResult) { + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Long intakeId = automaticClose.getIntakeId(); + String rtuAddr = automaticClose.getRtuAddr(); + String vcNum = automaticClose.getVcNum(); + String orderNo = automaticClose.getOrderNo(); + Integer waterAmount = automaticClose.getWaterAmount(); + Long operator = automaticClose.getOperator(); + + Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L); + Long comId = idLongGenerator.generate(); + + // 铏氭嫙鍗D鎹㈣櫄鎷熷崱瀵硅薄 + VoVirtualCard vc = commandSv.getVcById(vcId); + if (vc == null) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage()); + } + Double moneyRemain = vc.getMoney(); + + // 鑾峰彇姘翠环 + Double waterPrice = commandSv.getPrice(); + + // 闃�鎺у櫒鍦板潃鎹㈠彇姘村彛ID鍜岄�氳鍗忚 + JSONObject job_rtu = getRtu(null, rtuAddr); + if(job_rtu == null) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); + } + String protocol = job_rtu.getString("protocol"); + String orgTag = job_rtu.getString("orgTag"); + comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw); + + String commandCode = null; + if(protocol.equals("p206V202404")) { + return BaseResponseUtils.buildSuccess(); + } else if(protocol.equals("p206V1_0_1")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV1_0_1.cd_A0; + + // 鍒涘缓瑙嗗浘 + ComA0Vo param = new ComA0Vo(); + param.setIcCardNo(vcNum); + param.setMoneyRemain(moneyRemain); + param.setWaterPrice(waterPrice); + param.setWaterAmount(waterAmount); + param.setOrderNo(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_rm); + myParam.setOperator(operator); + return dealWithCommandResult(myParam); + } else { + return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } + } + + /** + * 鏍规嵁鎿嶄綔鍛業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()) ; + } + } + + /** + * 骞冲彴杩滅▼鍏呭�� + * @param po + * @param bindingResult + * @return + */ + @PostMapping(path = "recharge", consumes = MediaType.APPLICATION_JSON_VALUE) + @Transactional(rollbackFor = Exception.class) + @SsoAop() + public BaseResponse<Boolean> recharge(@RequestBody @Valid Recharge po, BindingResult bindingResult) { 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 = po.getIntakeId(); + Long cardId = po.getCardId(); + Double chargeMoney = po.getChargeMoney(); + Double chargeWater = po.getChargeWater(); + Long operator = po.getOperator(); + String flowNo = RandomStringUtils.randomNumeric(12); // 鐢熸垚12浣嶉殢鏈烘暟 + Long comId = idLongGenerator.generate(); + + // 鍙栨按鍙D鎹㈤榾鎺у櫒鍦板潃鍙婇�氳鍗忚 + JSONObject job_rtu = getRtu(intakeId, null); + if(job_rtu == null) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_EXIST.getMessage()); } - futureValue = new CompletableFuture<>(); + String rtuAddr = job_rtu.getString("rtuAddr"); + String protocol = job_rtu.getString("protocol"); - Map<String, Object> param = new HashMap<>(); - param.put("controllerType", "01"); - param.put("projectNo", 100); - param.put("rtuNewAddr", "202405061656120001"); + // 姘村崱ID鎹㈡按鍗″湴鍧�鍙婃按鍗$紪鍙� + SeClientCard seClientCard = commandSv.geClientCardByCardId(cardId); + if(seClientCard == null) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.CLIENT_CARD_NOT_EXIST.getMessage()); + } + String icCardAddr = seClientCard.getCardaddr(); + String icCardNo = seClientCard.getCardnum(); - 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); + String commandCode = null; + if(protocol.equals("p206V202404")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV202404.cd_15; - Map<String, String> headerParams = new HashMap<>(); + // 鍒涘缓瑙嗗浘 + ComCd15Vo param = new ComCd15Vo(); + param.controllerType = controllerType; + param.projectNo = projectNo; + param.icCardAddr = icCardAddr; + param.icCardNo = icCardNo; + param.chargeMoney = chargeMoney; + param.chargeWater = chargeWater; + param.flowNo = flowNo; - JSONObject job_result = restTemplateUtils.post("http://localhost:8070/accMw/com/send", JSON.toJSONString(postParams), headerParams); - - return BaseResponseUtils.buildSuccess(a) ; + /** + * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + * 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(rtuCallbackUrl_rm); + myParam.setOperator(operator); + return dealWithCommandResult(myParam); + } else if(protocol.equals("p206V1_0_1")) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION.getMessage()); + } else { + return BaseResponseUtils.buildFail("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } } - @GetMapping("/setValue") - public String setValue(String name) { - futureValue.complete(name); - return "Value set"; + /** + * 寮哄埗鍏抽榾 + * @param card + * @param bindingResult + * @return + */ + @PostMapping(path = "forced_close", consumes = MediaType.APPLICATION_JSON_VALUE) + @Transactional(rollbackFor = Exception.class) + @SsoAop() + public BaseResponse<Boolean> forcedClose(@RequestBody @Valid Card card, BindingResult bindingResult) { + if(bindingResult != null && bindingResult.hasErrors()){ + return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + + Long intakeId = card.getIntakeId(); + String cardAddr = card.getCardAddr(); + Long operator = card.getOperator(); + Long comId = idLongGenerator.generate(); + + // 鍙栨按鍙D鎹㈤榾鎺у櫒鍦板潃鍙婇�氳鍗忚 + 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"); + + String commandCode = null; + if(protocol.equals("p206V202404")) { + // 鑾峰彇鍔熻兘鐮� + commandCode = CodeV202404.cd_9C; + + // 鍒涘缓瑙嗗浘 + ComCd9CVo param = new ComCd9CVo(); + param.controllerType = controllerType; + param.projectNo = projectNo; + param.icCardAddr = cardAddr; + + /** + * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + * 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(rtuCallbackUrl_rm); + myParam.setOperator(operator); + return dealWithCommandResult(myParam); + } else if(protocol.equals("p206V1_0_1")) { + return BaseResponseUtils.buildErrorMsg(RemoteResultCode.THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION.getMessage()); + } else { + return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + } } + + /** + * 璁惧缁堢鐢ㄦ按鎺у埗 + * @param usability + * @param bindingResult + * @return + */ + //@PostMapping(path = "usability", consumes = MediaType.APPLICATION_JSON_VALUE) + //@Transactional(rollbackFor = Exception.class) + //@SsoAop() + //public BaseResponse<Boolean> usability(@RequestBody @Valid Usability usability, BindingResult bindingResult) { + // if(bindingResult != null && bindingResult.hasErrors()){ + // return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + // } + // + // Long intakeId = usability.getIntakeId(); + // Boolean valid = usability.getValid(); + // Long operator = usability.getOperator(); + // Long comId = idLongGenerator.generate(); + // + // // 鍙栨按鍙D鎹㈤榾鎺у櫒鍦板潃鍙婇�氳鍗忚 + // 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"); + // + // String commandCode = null; + // if(protocol.equals("p206V202404")) { + // if(valid) { + // // 鑾峰彇鍔熻兘鐮� + // commandCode = CodeV202404.cd_30; + // + // // 鍒涘缓瑙嗗浘 + // ComCd31Vo param = new ComCd31Vo(); + // param.controllerType = controllerType; + // param.projectNo = projectNo; + // param.valid = true; + // + // /** + // * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + // * 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(rtuCallbackUrl_rm); + // myParam.setOperator(operator); + // return dealWithCommandResult(myParam); + // }else { + // // 鑾峰彇鍔熻兘鐮� + // commandCode = CodeV202404.cd_31; + // + // // 鍒涘缓瑙嗗浘 + // ComCd31Vo param = new ComCd31Vo(); + // param.controllerType = controllerType; + // param.projectNo = projectNo; + // param.valid = false; + // + // /** + // * 鏋勯�犲懡浠ゃ�佸彂閫佸懡浠ゅ苟澶勭悊璇锋眰缁撴灉鍙婃墽琛岀粨鏋� + // * 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(rtuCallbackUrl_rm); + // myParam.setOperator(operator); + // return dealWithCommandResult(myParam); + // } + // } else if(protocol.equals("p206V1_0_1")) { + // return BaseResponseUtils.buildErrorMsg(RemoteResultCode.THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION.getMessage()); + // } else { + // return BaseResponseUtils.buildErrorMsg("绯荤粺鏆備笉鏀寔璇ュ崗璁�"); + // } + //} } -- Gitblit v1.8.0