Administrator
2024-07-06 b9e0f06eb30c3b77171cd78b9311758d17400d5b
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
11个文件已修改
307 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdC0Vo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmountHistory.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveLast.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
@@ -85,7 +85,7 @@
            (code.equals(cd_99) ? "定时关阀开阀" :
            (code.equals(cd_A0) ? "定量关阀开阀" :
            (code.equals(cd_B0) ? "查询实时数据" :
            (code.equals(cd_C0) ? "自报实时数据" :
            (code.equals(cd_C0) ? "自报(整点)实时数据" :
            ""))))))))))))))))))))))))))))))))))))))))) ;
        return name ;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdC0Vo.java
@@ -19,7 +19,7 @@
    public DataStateVo stateVo ;//状态
    public String toString(){
        StringBuilder sb = new StringBuilder() ;
        sb.append("   终端自报实时数据:\n");
        sb.append("   终端自报(整点)实时数据:\n");
        sb.append("      瞬时流量:");
        sb.append(instantAmount==null?"":instantAmount);
        sb.append("\n");
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
@@ -141,8 +141,17 @@
    Long getIntakeIdByName(String intakeName);
    /**
     * 得到所有的取水口名称
     * 取水口名称换取水口ID,验证是否重复名称使用
     * @param intakeName
     * @return
     */
    List<String> getIntakeName();
    List<Long> getIntakeIdsByName(String intakeName);
    /**
     * 取水口名称换取水口ID,验证是否重复名称使用
     * @param id
     * @param intakeName
     * @return
     */
    List<Long> getIntakeIdByNameExcludeId(@Param("id")Long id, @Param("intakeName")String intakeName);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmountHistory.java
@@ -43,6 +43,13 @@
    public Long intakeid;
    /**
     * 统计日期
     */
    @Schema(description = "日期", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd")
    public Date dt;
    /**
    * 累计取水量(不包括漏损水量)
    */
    @Schema(description = "累计取水量(不包括漏损水量)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@@ -55,6 +62,12 @@
    public Double loss;
    /**
     * 最后计水量的控制器地址
     */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    public String rtuAddrLast;
    /**
    * 最后计水量的控制器ID(外键)
    */
    @Schema(description = "控制器实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@@ -62,9 +75,9 @@
    public Long controlleridlast;
    /**
    * 最后计水量日期
    * 最后计水量上报数据接收时间
    */
    @Schema(description = "最后计水量日期", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Schema(description = "数据接收时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dtlast;
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveLast.java
@@ -216,7 +216,7 @@
    /**
     * 本次使用电量
     */
    public Double thisEle;
    public Double clThisEle;
    public void valueFrom(DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo) throws Exception {
        this.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
@@ -248,7 +248,7 @@
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.thisEle = null;//江海协议特有
        this.clThisEle = null;//江海协议特有
    }
    public void valueFrom84(DataV202404 dataV202404, DataCd84Vo cdData) throws Exception {
@@ -277,7 +277,7 @@
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.thisEle = null;//江海协议特有
        this.clThisEle = null;//江海协议特有
    }
    public void valueFrom85(DataV202404 dataV202404, DataCd85Vo cdData) throws Exception {
@@ -294,7 +294,7 @@
        this.clOrderNo = cdData.orderNo;
        this.clEleTotalAmount = cdData.eleTotalAmount;
        this.clWaterRemainUser = cdData.waterRemain;
        this.thisEle = cdData.thisEle;
        this.clThisEle = cdData.thisEle;
    }
    public void updateFrom(DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, boolean clearCloseValve) throws Exception {
@@ -307,22 +307,7 @@
        this.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt);
        if (clearCloseValve) {
            this.clDt = null;
            this.clType = null;
            this.clTotalAmount = null;
            this.clIcCardNo = null;
            this.clIcCardAddr = null;
            this.clRemainMoney = null;
            this.clThisAmount = null;
            this.clThisMoney = null;
            this.clThisTime = null;
            this.clOpenDt = null;
            this.closeDt = null;
            this.clOrderNo = null;//江海协议特有
            this.clEleTotalAmount = null;//江海协议特有
            this.clWaterRemainUser = null;//江海协议特有
            this.thisEle = null;//江海协议特有
            this.clearCloseValue();
        }
    }
@@ -340,18 +325,35 @@
        this.closeDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt) ;
        if(clearOpenValve){
            this.opDt = null ;
            this.opType = null ;
            this.opTotalAmount = null ;
            this.opIcCardNo = null ;
            this.opIcCardAddr = null ;
            this.opRemainMoney = null ;
            this.openDt = null ;
            this.clOrderNo = null;//江海协议特有
            this.clEleTotalAmount = null;//江海协议特有
            this.clWaterRemainUser = null;//江海协议特有
            this.thisEle = null;//江海协议特有
            this.clearOpenValue();
        }
    }
    public void clearCloseValue(){
        this.clDt = null;
        this.clType = null;
        this.clTotalAmount = null;
        this.clIcCardNo = null;
        this.clIcCardAddr = null;
        this.clRemainMoney = null;
        this.clThisAmount = null;
        this.clThisMoney = null;
        this.clThisTime = null;
        this.clOpenDt = null;
        this.closeDt = null;
        this.clOrderNo = null;//江海协议特有
        this.clEleTotalAmount = null;//江海协议特有
        this.clWaterRemainUser = null;//江海协议特有
        this.clThisEle = null;//江海协议特有
    }
    public void clearOpenValue(){
        this.opDt = null ;
        this.opType = null ;
        this.opTotalAmount = null ;
        this.opIcCardNo = null ;
        this.opIcCardAddr = null ;
        this.opRemainMoney = null ;
        this.openDt = null ;
    }
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -443,8 +443,16 @@
    SELECT id AS intakeId FROM pr_intake WHERE `name` = #{intakeName}
  </select>
  <!--得到所有的取水口名称-->
  <select id="getIntakeName" resultType="java.lang.String">
    SELECT `name`  FROM pr_intake WHERE deleted = 0
  <!--取水口名称换取水口ID,验证是否重复名称使用-->
  <select id="getIntakeIdsByName" resultType="java.lang.Long">
    SELECT id AS intakeId FROM pr_intake WHERE `name` = #{intakeName}
  </select>
  <!--取水口名称换取水口ID,验证是否重复名称使用-->
  <select id="getIntakeIdByNameExcludeId" resultType="java.lang.Long">
    SELECT id AS intakeId FROM pr_intake WHERE id != #{id} and `name` = #{intakeName}
  </select>
</mapper>
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java
@@ -63,32 +63,46 @@
            //数据库中不存在该控制器的开关阀数据
            //首先生成最新数据及历史数据,并先保存
            poLast = this.newRmOpenCloseValveLast(controller, rtuAddr, dV1_0_1, dataCd83CloseVo);
            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, null);
            //保存最新数据
            sv.saveRmOpenCloseValveLast(poLast);
        }else{
            if(poLast.clType == null){
                //原记录不存在关阀数据,所以当前关阀上报是新的一次关阀
                if(poLast.opType == null){
                    //原记录中不存在开阀数据,没办法进行匹配
                if(poLast.opType == null || poLast.openDt == null){
                    //原记录中不存在开阀数据(即开阀与关阀数据都没有,这种情况一般不存在),没办法进行匹配
                    //生成并保存新的关阀上报历史数据记录
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, null);
                }else{
                    //原记录中存在开阀数据,进行历史数据匹配
                    RmOpenCloseValveHistory poHistory = null ;
                    if(poLast.lastHistoryId != null){
                        poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
                        if(poHistory != null){
                            //当前关阀上报是新的一次关阀,保留原记录中的开阀数据
                            this.updateCloseValve(controller, poLast, poHistory, dV1_0_1, dataCd83CloseVo, false) ;
                            sv.updateRmOpenCloseValveHistory(poHistory);
                            if(poHistory.openDt != null){
                                //上面已经判断了poLast.openDt == null,所以此处一般会是poHistory.openDt != null
                                if(poHistory.openDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.openDt))){
                                    //匹配成功
                                    //当前关阀是原记录中开阀的对应关阀
                                    this.updateCloseValve(controller, poLast, poHistory, dV1_0_1, dataCd83CloseVo, false) ;
                                    sv.updateRmOpenCloseValveHistory(poHistory);
                                }else{
                                    //匹配失败
                                    //当前关阀不是原记录中开阀的对应关阀,生成并保存新的关阀上报历史数据记录
                                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, true);
                                }
                            }else{
                                //这种情况不存在,认为匹配失败
                                //当前关阀不是原记录中开阀的对应关阀,生成并保存新的关阀上报历史数据记录
                                this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, true);
                            }
                        }else{
                            //没有历史数据,生成并保存新的关阀上报历史数据记录
                            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, true);
                        }
                    }else{
                        //没有历史数据,生成并保存新的关阀上报历史数据记录
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, true);
                    }
                }
            }else if(poLast.opType != null){
@@ -99,15 +113,15 @@
                    //重复上报了,不进行处理
                }else {
                    //当前上报的关阀数据晚于原来的关阀数据,是新的上报关阀数据
                    this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, false) ;
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                    this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, true) ;
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, null);
                }
            }else{
                //if(po.opType == null)
                //原记录不存在开阀数据也不存在关阀数据,这种情况不存在,但为安全也进行处理
                this.updateCloseValve(controller, poLast, null, dV1_0_1, dataCd83CloseVo, false) ;
                //生成并保存新的关阀上报历史数据记录
                this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast, null);
            }
            sv.updateRmOpenCloseValveLast(poLast);
@@ -124,11 +138,20 @@
     * @param poLast
     * @throws Exception
     */
    private void newHistoryDataDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo, RmOpenCloseValveLast poLast)throws Exception {
    private void newHistoryDataDeal(DbSv sv,
                                    PrController controller,
                                    String rtuAddr,
                                    DataV1_0_1 dV1_0_1,
                                    DataCd83CloseVo dataCd83CloseVo,
                                    RmOpenCloseValveLast poLast,
                                    Boolean clearOpenValue)throws Exception {
        RmOpenCloseValveHistory poHistory = this.newRmOpenCloseValveHistory(controller, rtuAddr, dV1_0_1, dataCd83CloseVo) ;
        sv.saveRmOpenCloseValveHistory(poHistory);
        //由最新数据持有历史数据中的最新记录ID,以方便快速查询
        poLast.lastHistoryId = poHistory == null ? null: poHistory.id ;
        if(clearOpenValue != null && clearOpenValue.booleanValue()){
            poLast.clearOpenValue();
        }
    }
    /**
@@ -140,7 +163,10 @@
     * @return
     * @throws Exception
     */
    private RmOpenCloseValveLast newRmOpenCloseValveLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo)throws Exception {
    private RmOpenCloseValveLast newRmOpenCloseValveLast(PrController controller,
                                                         String rtuAddr,
                                                         DataV1_0_1 dV1_0_1,
                                                         DataCd83CloseVo dataCd83CloseVo)throws Exception {
        RmOpenCloseValveLast po = new RmOpenCloseValveLast() ;
        po.controllerId = controller==null?null:controller.getId() ;
        po.intakeId = controller==null?null:controller.getIntakeId() ;
@@ -159,7 +185,10 @@
     * @return
     * @throws Exception
     */
    private RmOpenCloseValveHistory newRmOpenCloseValveHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo)throws Exception {
    private RmOpenCloseValveHistory newRmOpenCloseValveHistory(PrController controller,
                                                               String rtuAddr,
                                                               DataV1_0_1 dV1_0_1,
                                                               DataCd83CloseVo dataCd83CloseVo)throws Exception {
        RmOpenCloseValveHistory po = new RmOpenCloseValveHistory() ;
        po.controllerId = controller==null?null:controller.getId() ;
        po.intakeId = controller==null?null:controller.getIntakeId() ;
@@ -179,7 +208,12 @@
     * @param clearOpenValve
     * @throws Exception
     */
    private void updateCloseValve(PrController controller, RmOpenCloseValveLast poLast, RmOpenCloseValveHistory poHistory, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo, boolean clearOpenValve) throws Exception {
    private void updateCloseValve(PrController controller,
                                  RmOpenCloseValveLast poLast,
                                  RmOpenCloseValveHistory poHistory,
                                  DataV1_0_1 dV1_0_1,
                                  DataCd83CloseVo dataCd83CloseVo,
                                  boolean clearOpenValve) throws Exception {
        poLast.controllerId = controller==null?null:controller.getId();
        poLast.intakeId = controller==null?null:controller.getIntakeId();
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
@@ -65,61 +65,47 @@
            sv.saveRmOpenCloseValveLast(poLast);
        }else{
            //数据库中存在该控制器的开关阀数据
            if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt).equals(poLast.openDt)){
                //时间一致,重复上报数据,不进行任何处理
                //log.error("测试开阀日期一致");
            }else{
                if(poLast.opType != null){
                    //原记录存在开阀数据,首先进行时间对比
                    if(poLast.openDt != null && poLast.openDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                        //补报的许久之前的开阀数据,不进行处理
                    }else if(poLast.openDt != null && poLast.openDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                        //重复上报的开阀数据,不进行处理
                    }else{
                        //当前开阀上报是新的一次开阀,不管原记录是否存在关阀数据,一律清空关阀数据
                        this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                        //生成并保存新的开阀上报历史数据记录
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
                    }
                }else if(poLast.clType != null){
                    //原记录不存在开阀数据,但存在关阀数据,首先进行时间比对
                    if(poLast.closeDt != null && poLast.closeDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                        //当前上报是补报的开阀数据
                        RmOpenCloseValveHistory poHistory = null ;
                        if(poLast.lastHistoryId != null){
                            poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
                        }
                        this.updateOpenValve(controller, poLast, poHistory, dV1_0_1, dataCd83OpenVo, false) ;
                        if(poHistory != null){
                            sv.updateRmOpenCloseValveHistory(poHistory);
                        }
                    }else if(poLast.closeDt != null && poLast.closeDt.before(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                        //当前上报是新的开阀数据,把最新数据中的关阀内容清空
                        this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                        //生成并保存新的开阀上报历史数据记录
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
                    }else {
                        //当前上报的开阀数据与原来的关阀数据同一时间,这种情况应该不存在,但也处理
                        RmOpenCloseValveHistory poHistory = null ;
                        if(poLast.lastHistoryId != null){
                            poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
                        }
                        this.updateOpenValve(controller, poLast, poHistory, dV1_0_1, dataCd83OpenVo, false) ;
                        if(poHistory != null){
                            sv.updateRmOpenCloseValveHistory(poHistory);
                        }
                    }
            if(poLast.opType != null){
                //原记录存在开阀数据,首先进行时间对比
                if(poLast.openDt != null && poLast.openDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                    //补报的许久之前的开阀数据,不进行处理
                }else if(poLast.openDt != null && poLast.openDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                    //重复上报的开阀数据,不进行处理
                }else{
                    //if(po.clType == null)
                    //原记录不存在开阀数据也不存在关阀数据,这种情况不存在,但为安全也进行处理
                    //当前开阀上报是新的一次开阀,不管原记录是否存在关阀数据,一律清空关阀数据
                    this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                    //生成并保存新的开阀上报历史数据记录
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
                }
                sv.updateRmOpenCloseValveLast(poLast);
            }else if(poLast.clType != null){
                //原记录不存在开阀数据,但存在关阀数据,首先进行时间比对
                if(poLast.clOpenDt != null && poLast.clOpenDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                    //补报的许久之前的开阀报数据,不进行处理
                }else if(poLast.clOpenDt != null && poLast.clOpenDt.before(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                    //当前上报是新的开阀数据,把最新(last)数据中的关阀内容清空
                    this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                    //生成并保存新的开阀上报历史数据记录
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
                }else {
                    //当前上报的开阀数据与原来的关阀数据同一时间,这种情况应该不存在,但也处理
                    RmOpenCloseValveHistory poHistory = null ;
                    if(poLast.lastHistoryId != null){
                        poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
                    }
                    this.updateOpenValve(controller, poLast, poHistory, dV1_0_1, dataCd83OpenVo, false) ;
                    if(poHistory != null){
                        sv.updateRmOpenCloseValveHistory(poHistory);
                    }
                }
            }else{
                //if(poLast.opType == null && po.clType == null)
                //原记录不存在开阀数据也不存在关阀数据,这种情况不存在,但为安全也进行处理
                this.updateOpenValve(controller, poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                //生成并保存新的开阀上报历史数据记录
                this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
            }
            sv.updateRmOpenCloseValveLast(poLast);
        }
    }
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeCtrl.java
@@ -147,15 +147,11 @@
        if (bindingResult != null && bindingResult.hasErrors()) {
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        List<String> intakeNameList = intakeSv.getIntakeName();
        for (int i = 0; i < intakeNameList.size(); i++) {
            String intakeName = intakeNameList.get(i);
            if (intakeName.equals(po.getName())) {
                return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_NAME_EXIST.getMessage());
            }
        List<Long> ids = intakeSv.getIntakeIdsByName(po.getName());
        if (ids.size() > 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_NAME_EXIST.getMessage());
        }
        Date operateTime = new Date();
        po.setOperateDt(operateTime);
        po.setOperateDt(new Date());
        po.setDeleted((byte)0);
        Integer rec = Optional.ofNullable(intakeSv.addIntake(po)).orElse(0);
        if (rec == 0) {
@@ -185,16 +181,12 @@
        if (bindingResult != null && bindingResult.hasErrors()) {
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        List<String> intakeNameList = intakeSv.getIntakeName();
        for (int i = 0; i < intakeNameList.size(); i++) {
            String intakeName = intakeNameList.get(i);
            if (intakeName.equals(po.getName())) {
                return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_NAME_EXIST.getMessage());
            }
        List<Long> ids = intakeSv.getIntakeIdByNameExcludeId(po.getId(), po.getName());
        if (ids.size() > 0){
            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_NAME_EXIST.getMessage());
        }
        int count;
        Date operateTime = new Date();
        po.setOperateDt(operateTime);
        po.setOperateDt( new Date());
        try {
            count = this.intakeSv.update(po);
        } catch (Exception e) {
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intake/IntakeSv.java
@@ -287,11 +287,24 @@
        return response.getBody();
    }
    /**
     * 得到所有取水口名称
     * 取水口名称换取水口ID,验证是否重复名称使用
     * @param intakeName
     * @return
     */
    public List<String> getIntakeName() {
        return prIntakeMapper.getIntakeName();
    public List<Long> getIntakeIdsByName(String intakeName) {
        return prIntakeMapper.getIntakeIdsByName(intakeName);
    }
    /**
     * 取水口名称换取水口ID,验证是否重复名称使用
     * @param intakeName
     * @return
     */
    public List<Long> getIntakeIdByNameExcludeId(Long id, String intakeName) {
        return prIntakeMapper.getIntakeIdByNameExcludeId(id, intakeName);
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
@@ -29,7 +29,7 @@
    PLEASE_INPUT_INTAKE_ID(20004, "取水口编号不为空"),
    DELETE_INTAKE_FAIL(20005, "取水口删除失败"),
    NO_BINDING_INTAKE(20006, "没有未绑定的取水口"),
    INTAKE_NAME_EXIST(20006, "取水口名称已存在"),
    INTAKE_NAME_EXIST(20007, "取水口名称已存在"),
    /**
     * 控制器