|  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson2.JSONObject; | 
|---|
|  |  |  | import com.dy.common.aop.SsoAop; | 
|---|
|  |  |  | import com.dy.common.mw.protocol.Command; | 
|---|
|  |  |  | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo; | 
|---|
|  |  |  | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_9D_A3Vo; | 
|---|
|  |  |  | import com.dy.common.util.Callback; | 
|---|
|  |  |  | import com.dy.common.webUtil.BaseResponse; | 
|---|
|  |  |  | import com.dy.common.webUtil.BaseResponseUtils; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.voRm.VoUnclosedParam; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen; | 
|---|
|  |  |  | import com.dy.pipIrrRemote.common.dto.DtoBase; | 
|---|
|  |  |  | import com.dy.pipIrrRemote.monitor.common.ComCtrl; | 
|---|
|  |  |  | import io.swagger.v3.oas.annotations.tags.Tag; | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Tag(name = "远程命令", description = "平台远程关阀") | 
|---|
|  |  |  | @RestController("cd93Ctrl") | 
|---|
|  |  |  | @RestController("p202404V201Cd93Ctrl") | 
|---|
|  |  |  | @RequestMapping(path = "p202404V201/cd93") | 
|---|
|  |  |  | @RequiredArgsConstructor | 
|---|
|  |  |  | @Scope("prototype") //因为有对象类属性,所以采用原型模式,每次请求新建一个实例对象 | 
|---|
|  |  |  | 
|---|
|  |  |  | res = super.pre2(sv, ComCode, dto, bindingResult); | 
|---|
|  |  |  | if (res == null) { | 
|---|
|  |  |  | //获取开阀命令参数 | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | 2025-06-27原来的实现,原来没有设计RmCommandOpen对象及其对应的数据库表 | 
|---|
|  |  |  | VoUnclosedParam opPa = sv.selectUncloseParam(dto.getIntakeId(), ctrlPo.getRtuAddr()); | 
|---|
|  |  |  | if(opPa == null) { | 
|---|
|  |  |  | return BaseResponseUtils.buildFail("该取水口上无您最近的开阀操作"); | 
|---|
|  |  |  | 
|---|
|  |  |  | CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType) | 
|---|
|  |  |  | .icCardNo(opPa.getVcNum())//用户卡序列号(17位数字)(6字节BCD,2字节HEX) | 
|---|
|  |  |  | .orderNo(opPa.getOrderNo())//订单号(16位数字) | 
|---|
|  |  |  | .build(); | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | RmCommandOpen comOpen = sv.getCommandOpen(dto.getIntakeId()) ; | 
|---|
|  |  |  | if(comOpen == null) { | 
|---|
|  |  |  | return BaseResponseUtils.buildFail("该取水口上无您最近的开阀操作"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Long vcId = sv.getVcIdByNum("" + comOpen.vcNum) ; | 
|---|
|  |  |  | if(vcId == null) { | 
|---|
|  |  |  | return BaseResponseUtils.buildFail("服务端出错,未得到虚拟卡ID"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //发送命令前-3:保存命令日志 | 
|---|
|  |  |  | CdParam comParam = CdParam.builder().commandCode(ComCode).projectNo(projectNo).controllerType(controllerType) | 
|---|
|  |  |  | .icCardNo("" + comOpen.vcNum)//用户卡序列号(17位数字)(6字节BCD,2字节HEX) | 
|---|
|  |  |  | .orderNo(comOpen.orderNo)//订单号(16位数字) | 
|---|
|  |  |  | .build(); | 
|---|
|  |  |  | res = super.pre3(sv, dto.getIntakeId(), dto.getOperator(), ComCode, comParam); | 
|---|
|  |  |  | if (res == null) { | 
|---|
|  |  |  | 
|---|
|  |  |  | msg = RtuSuccessMsg ; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | String json = codeData.toJSONString(); | 
|---|
|  |  |  | DataCd93_A3Vo cvo = JSON.parseObject(json, DataCd93_A3Vo.class) ; | 
|---|
|  |  |  | DataCd93_9D_A3Vo cvo = JSON.parseObject(json, DataCd93_9D_A3Vo.class) ; | 
|---|
|  |  |  | if(cvo != null){ | 
|---|
|  |  |  | if(callback != null){ | 
|---|
|  |  |  | if(cvo.clResult != null && cvo.clResult == 0){ | 
|---|