zhubaomin
2024-08-29 60c4588643b878cc7aa8822ea9f40bde2a6e3e75
2024-08-29 朱宝民 监测控制模块增加代用户开关阀功能
9个文件已修改
427 ■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/DtoBase.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/ValveOpen.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/result/RemoteResultCode.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java 351 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-database-ym.yml
@@ -5,10 +5,10 @@
            #name: ym
            type: com.alibaba.druid.pool.DruidDataSource
            driverClassName: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
#            url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
#            url: jdbc:mysql://8.130.130.233:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            #url: jdbc:mysql://8.140.179.55:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
#            url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
            username: root
            password: dysql,;.abc!@#
            druid:
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -71,7 +71,7 @@
pipIrr:
    global:
        dev: true   #是否开发阶段,true或false
        dev: false   #是否开发阶段,true或false
        dsName: ym  #开发阶段,设置临时的数据库名称
    mw:
        webPort: 8070
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/application-database.yml
@@ -4,7 +4,7 @@
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
#        url: jdbc:mysql://192.168.40.166:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
        #url: jdbc:mysql://8.130.130.233:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
#        url: jdbc:mysql://8.130.130.233:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
        #url: jdbc:mysql://8.140.179.55:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
        url: jdbc:mysql://127.0.0.1:3306/pipIrr_ym?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull
        username: root
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/DtoBase.java
@@ -21,6 +21,11 @@
    private Long intakeId;
    /**
     * 取水口名称
     */
    private String intakeName;
    /**
     * 操作人
     */
    @NotNull(message = "操作人不能为空")
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/ValveOpen.java
@@ -18,9 +18,4 @@
     */
    private Long vcId;
    /**
     * 用户类型 1-平台,2-APP
     */
    //@NotNull(message = "操作类型不能为空")
    //private Integer userType;
}
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/result/RemoteResultCode.java
@@ -21,11 +21,14 @@
    IN_USE_VC_CANNOT_OPEN_VALVE(10004, "使用中虚拟卡不能用来开阀"),
    VALVE_CLOSED(10005, "该取水口不在线或已关阀"),
    THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION(10006, "该设备无此同能"),
    NO_WATER_PRICE(10007, "未取到水价"),
    NO_ORDER_NUMBER(10008, "未生成订单号"),
    /**
     * RTU
     */
    RTU_NOT_EXIST(20001, "阀控器不存在"),
    RTU_NOT_SET_DATA_SOURCE(20002, "阀控器未设置数据源"),
    CLIENT_CARD_NOT_EXIST(30001, "水卡不存在");
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/valve/ValveCtrl.java
@@ -78,7 +78,7 @@
    }
    /**
     * 平台远程开阀
     * 平台远程开阀(强制开阀)
     * @param valve
     * @param bindingResult
     * @return
@@ -97,31 +97,11 @@
        Long operator = valve.getOperator();
        Long comId = idLongGenerator.generate();
        /**
         * 如果农户选择了虚拟卡,则使用该虚拟卡
         * 如果农户未选择虚拟卡,则根据取水口ID获取与之绑定的虚拟卡
         * 如果取水口没有与之绑定的虚拟卡,则提示农户选择一张虚拟卡
         */
        if(vcId == null) {
            vcId = commandSv.getVcIdByIntakeId(intakeId);
            if(vcId == null) {
                return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage());
            }
        }
        // 虚拟卡ID换虚拟卡对象
        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();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -131,13 +111,37 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if(protocol.equals("p206V202404")) {
            // 新协议参数中需要虚拟卡
            if(vcId == null) {
                vcId = commandSv.getVcIdByIntakeId(intakeId);
                if(vcId == null) {
                    return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage());
                }
            }
            // 虚拟卡ID换虚拟卡对象
            VoVirtualCard vc = commandSv.getVcById(vcId);
            if(vc == null) {
                return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage());
            }
            if(vc.getInUse()) {
                return BaseResponseUtils.buildErrorMsg(RemoteResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage());
            }
            // 获取功能码
            commandCode = CodeV202404.cd_92;
@@ -174,13 +178,6 @@
            // 获取功能码
            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 准备参数
@@ -195,7 +192,7 @@
            myParam.setRtuAddr(rtuAddr);
            myParam.setProtocol(protocol);
            myParam.setVcId(vcId);
            myParam.setParam(param);
            //myParam.setParam(param);
            myParam.setRtuResultSendWebUrl(rtuCallbackUrl_rm);
            myParam.setOperator(operator);
            return dealWithCommandResult(myParam);
@@ -205,7 +202,7 @@
    }
    /**
     * 平台远程关阀_取水口模式
     * 平台远程关阀(强制关阀)
     * @param dtoBase
     * @param bindingResult
     * @return
@@ -245,6 +242,9 @@
        //Long intakeId = job_rtu.getLong("intakeId");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        String commandCode = null;
@@ -281,8 +281,247 @@
            // 获取功能码
            commandCode = CodeV1_0_1.cd_93;
            /**
             * 构造命令、发送命令并处理请求结果及执行结果
             * 1 准备参数
             * 2 调用公共方法
             */
            Param myParam = new Param();
            myParam.setComId(comId);
            myParam.setComType((byte)2);
            myParam.setCommandCode(commandCode);
            myParam.setCommandName(CodeV1_0_1.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 valve
     * @param bindingResult
     * @return
     */
    @PostMapping(path = "open_client", consumes = MediaType.APPLICATION_JSON_VALUE)
    @Transactional(rollbackFor = Exception.class)
    @SsoAop()
    public BaseResponse<Boolean> openClient(@RequestBody @Valid ValveOpen valve, BindingResult bindingResult) {
        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获取与之绑定的虚拟卡
         * 如果取水口没有与之绑定的虚拟卡,则提示农户选择一张虚拟卡
         */
        if (vcId == null) {
            vcId = commandSv.getVcIdByIntakeId(intakeId);
            if (vcId == null) {
                return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage());
            }
        }
        // 虚拟卡ID换虚拟卡对象
        VoVirtualCard vc = commandSv.getVcById(vcId);
        if (vc == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.PLEASE_SELECT_A_VC.getMessage());
        }
        // 虚拟卡状态为使用中,且不是强制开阀时提示
        if (vc.getInUse()) {
            return BaseResponseUtils.buildCodeMsg(RemoteResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getCode(), RemoteResultCode.IN_USE_VC_CANNOT_OPEN_VALVE.getMessage());
        }
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        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");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if (protocol.equals("p206V202404")) {
            // 获取功能码
            commandCode = CodeV202404.cd_A2;
            // 创建视图
            Com98Vo param = new Com98Vo() ;
            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_97;
            // 创建视图
            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(CodeV1_0_1.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 dtoBase
     * @param bindingResult
     * @return
     */
    @PostMapping(path = "close_client", consumes = MediaType.APPLICATION_JSON_VALUE)
    @Transactional(rollbackFor = Exception.class)
    @SsoAop()
    public BaseResponse<Boolean> closeClient(@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());
        }
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        String commandCode = null;
        if (protocol.equals("p206V202404")) {
            // 获取功能码
            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_rm);
            myParam.setOperator(operator);
            return dealWithCommandResult(myParam);
        } else if (protocol.equals("p206V1_0_1")) {
            // 获取功能码
            commandCode = CodeV1_0_1.cd_98;
            // 创建视图
            Com98Vo param = new Com98Vo();
            param.icCardNo = vcNum;
            param.orderNo = orderNo;
@@ -310,7 +549,7 @@
    }
    /**
     * 定时关阀
     * 定时关阀式开阀
     * @param automaticClose
     * @param bindingResult
     * @return
@@ -351,6 +590,9 @@
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -360,10 +602,16 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if(protocol.equals("p206V202404")) {
@@ -404,7 +652,7 @@
    }
    /**
     * 定量关阀
     * 定量关阀式开阀
     * @param automaticClose
     * @param bindingResult
     * @return
@@ -445,6 +693,9 @@
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -454,10 +705,16 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if(protocol.equals("p206V202404")) {
@@ -498,7 +755,7 @@
    }
    /**
     * 计划开阀定时关阀
     * 定时关阀式计划开阀
     * @param automaticClose
     * @param bindingResult
     * @return
@@ -546,6 +803,9 @@
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -555,10 +815,16 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if(protocol.equals("p206V202404")) {
@@ -604,7 +870,7 @@
    }
    /**
     * 计划开阀定量关阀
     * 定量关阀式计划开阀
     * @param automaticClose
     * @param bindingResult
     * @return
@@ -652,6 +918,9 @@
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -661,10 +930,16 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(RemoteResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if(protocol.equals("p206V202404")) {
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/command/ValveCtrl.java
@@ -51,7 +51,6 @@
@Tag(name = "小程序阀控器控制", description = "小程序阀控器控制")
@RestController
@RequestMapping(path = "valve")
//@RequiredArgsConstructor
public class ValveCtrl extends ComSupport {
    private final CommandSv commandSv;
    private final SeVirtualCardMapper seVirtualCardMapper;
@@ -134,6 +133,9 @@
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -143,10 +145,16 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if (protocol.equals("p206V202404")) {
@@ -246,6 +254,9 @@
        Long intakeId = job_rtu.getLong("intakeId");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        String commandCode = null;
@@ -351,6 +362,9 @@
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -360,10 +374,16 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if(protocol.equals("p206V202404")) {
@@ -444,6 +464,9 @@
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -453,10 +476,17 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if(protocol.equals("p206V202404")) {
            return BaseResponseUtils.buildSuccess();
@@ -543,6 +573,9 @@
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -552,10 +585,16 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if(protocol.equals("p206V202404")) {
@@ -648,6 +687,9 @@
        // 获取水价
        Double waterPrice = commandSv.getPrice();
        if(waterPrice == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_WATER_PRICE.getMessage());
        }
        // 取水口ID换阀控器地址及通讯协议
        JSONObject job_rtu = getRtu(intakeId, null);
@@ -657,10 +699,16 @@
        String rtuAddr = job_rtu.getString("rtuAddr");
        String protocol = job_rtu.getString("protocol");
        String orgTag = job_rtu.getString("orgTag");
        if(orgTag == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.RTU_NOT_SET_DATA_SOURCE.getMessage());
        }
        comSendUrl = env.getProperty(pro_mw + "." + orgTag + "." + key_mw);
        // 生成订单号
        String orderNo = generateOrderNo();
        if(orderNo == null) {
            return BaseResponseUtils.buildErrorMsg(WechatResultCode.NO_ORDER_NUMBER.getMessage());
        }
        String commandCode = null;
        if(protocol.equals("p206V202404")) {
pipIrr-platform/pipIrr-web/pipIrr-web-wechat/src/main/java/com/dy/pipIrrWechat/result/WechatResultCode.java
@@ -23,13 +23,16 @@
    PLEASE_SELECT_A_INTAKE(10004, "请选择一个取水口"),
    IN_USE_VC_CANNOT_OPEN_VALVE(10005, "使用中虚拟卡不能用来开阀"),
    THE_DEVICE_DOES_NOT_HAVE_THIS_FUNCTION(10006, "该设备无此同能"),
    NO_WATER_PRICE(10007, "未取到水价"),
    NO_ORDER_NUMBER(10008, "未生成订单号"),
    /**
     * RTU
     */
    RTU_NOT_EXIST(20001, "阀控器不存在"),
    //RTU_ADDR_CANNOT_BE_NULL(20002, "阀控器地址不能为空");
    CLIENT_CARD_NOT_EXIST(30001, "水卡不存在"),
    CLIENT_CARD_NOT_EXIST(20002, "水卡不存在"),
    RTU_NOT_SET_DATA_SOURCE(20003, "阀控器未设置数据源"),
    /**
     * 微信用户