zhubaomin
2025-04-08 5f54ba90abcc0ccf1b578472eac54fc98056767c
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/CommandSv.java
@@ -8,11 +8,13 @@
import com.dy.common.mw.protocol.p206V1.CodeV1;
import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
import com.dy.common.mw.protocol.p206V1.downVos.Com97Vo;
import com.dy.common.mw.protocol.p206V1.downVos.Com98Vo;
import com.dy.common.mw.protocol.p206V1.downVos.ComA1Vo;
import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
import com.dy.common.mw.protocol.p206V202404.CodeV202404;
import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
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;
@@ -36,6 +38,7 @@
import com.dy.pipIrrGlobal.voRm.VoUnclosedValve;
import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
import com.dy.pipIrrWechat.command.dto.AutomaticClose;
import com.dy.pipIrrWechat.command.dto.ValveClose;
import com.dy.pipIrrWechat.command.dto.ValveOpen;
import com.dy.pipIrrWechat.result.WechatResultCode;
import lombok.RequiredArgsConstructor;
@@ -429,6 +432,13 @@
        }
    }
    /**
     * 小程序远程开阀
     * @param valve
     * @param planId
     * @param operatetype
     * @return
     */
    public Map openWx(ValveOpen valve, Long planId, Byte operatetype) {
        Long intakeId = valve.getIntakeId();
        String intakeName = valve.getIntakeName();
@@ -657,4 +667,140 @@
            return map;
        }
    }
    /**
     * 小程序远程关阀
     * @param valve
     * @param planId
     * @param operatetype
     * @return
     */
    public Map closeWx(ValveClose valve, Long planId, Byte operatetype) {
        String rtuAddr = valve.getRtuAddr();
        String vcNum = valve.getVcNum();
        Long vcId = Optional.ofNullable(seVirtualCardMapper.getVcIdByNum(vcNum)).orElse(0L);
        String orderNo = valve.getOrderNo();
        Long operator = valve.getOperator();
        Byte openType = valve.getOpenType();
        Long comId = new IDLongGenerator().generate();
        // 阀控器地址换取水口ID和通讯协议
        JSONObject job_rtu = getRtu(null, rtuAddr);
        if (job_rtu == null) {
            irIntakeOperateMapper.updateByCommandId(comId, (byte)2, WechatResultCode.RTU_NOT_EXIST.getMessage());
            Map map = new HashMap<>();
            map.put("success", false);
            map.put("msg", WechatResultCode.RTU_NOT_EXIST.getMessage());
            map.put("content", null);
            return map;
            //return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_EXIST.getMessage());
        }
        Long intakeId = job_rtu.getLong("intakeId");
        String protocol = job_rtu.getString("protocol");
        // 如果是轮灌
        if(openType != null && openType == 1) {
            IrIntakeOperate irIntakeOperate = new IrIntakeOperate();
            irIntakeOperate.setPlanId(planId);
            irIntakeOperate.setOperateType(operatetype);
            irIntakeOperate.setCommandId(comId);
            irIntakeOperate.setIntakeId(intakeId);
            Long id = addIntakeOperate(irIntakeOperate);
            if(id == null) {
                Map map = new HashMap<>();
                map.put("success", false);
                map.put("msg", "添加取水口操作记录失败");
                map.put("content", null);
                return map;
            }
        }
        comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
        String commandCode = null;
        if (protocol.equals(ProtocolConstantV206V202404.protocolName)) {
            // 获取功能码
            commandCode = CodeV202404.cd_A3;
            // 创建视图
            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_wx);
            myParam.setOperator(operator);
            //return dealWithCommandResult(myParam);
            BaseResponse<Boolean> result = dealWithCommandResult(myParam);
            Map map = new HashMap<>();
            map.put("success", result.isSuccess());
            map.put("msg", result.getMsg());
            map.put("content", result.getContent());
            return map;
        } else if (protocol.equals(ProtocolConstantV206V1.protocolName) || protocol.equals(ProtocolConstantV206V2.protocolName)) {
            // 获取功能码
            commandCode = CodeV1.cd_98;
            // 创建视图
            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(CodeV1.getCodeName(commandCode));
            myParam.setIntakeId(intakeId);
            myParam.setRtuAddr(rtuAddr);
            myParam.setProtocol(protocol);
            myParam.setVcId(vcId);
            myParam.setParam(param);
            myParam.setRtuResultSendWebUrl(rtuCallbackUrl_wx);
            myParam.setOperator(operator);
            //return dealWithCommandResult(myParam);
            BaseResponse<Boolean> result = dealWithCommandResult(myParam);
            Map map = new HashMap<>();
            map.put("success", result.isSuccess());
            map.put("msg", result.getMsg());
            map.put("content", result.getContent());
            return map;
        } else {
            irIntakeOperateMapper.updateByCommandId(comId, (byte)2, "系统暂不支持该协议" + "(" + intakeId + ")");
            Map map = new HashMap<>();
            map.put("success", false);
            map.put("msg", "系统暂不支持该协议");
            map.put("content", null);
            return map;
            //return BaseResponseUtils.buildErrorMsg("系统暂不支持该协议");
        }
    }
}