wuzeyu
2024-01-18 9281643d18bc2e0aaffed3c5f216d1df12d68424
Merge remote-tracking branch 'origin/master'
35个文件已修改
24个文件已添加
2个文件已删除
3663 ■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateHistoryMapper.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateLastMapper.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportHistoryMapper.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportLastMapper.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountMapper.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveReportMapper.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmount.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveReport.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Constant.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportHistoryMapper.xml 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportLastMapper.xml 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountMapper.xml 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveReportMapper.xml 303 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/DtoRole.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoToPojo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/文档/取水口控制器及测控数据关系.docx 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/文档/取水口控制器及测控数据关系.vsd 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
@@ -9,8 +9,8 @@
    // 6、流量计故障关阀;7、紧急关阀;8、用户远程开阀;9、用户远程关阀;
    public Byte type ;
    public Double totalAmount; //累计流量:5字节BCD码,取值范围0~9999999999,单位为m3。
    public String cardNo ;//IC卡编号
    public String icAddr ;//ic卡地址
    public String IcCardNo;//IC卡编号
    public String icCardAddr;//ic卡地址
    public Double remainMoney ;//剩余金额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元
    public String openDt ;//用水户用水开始时间:6字节BCD码,顺序是年月日时分秒,其中公元年=2000+年。
    public String closeDt ;//用水户用水结束时间:6字节BCD码,顺序是年月日时分秒,其中公元年=2000+年。
@@ -29,10 +29,10 @@
        sb.append(totalAmount==null?"":totalAmount);
        sb.append("\n");
        sb.append("      IC卡编号:");
        sb.append(cardNo);
        sb.append(IcCardNo);
        sb.append("\n");
        sb.append("      ic卡地址:");
        sb.append(icAddr);
        sb.append(icCardAddr);
        sb.append("\n");
        sb.append("      å‰©ä½™é‡‘额(元):");
        sb.append(remainMoney ==null?"": remainMoney);
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java
@@ -11,8 +11,8 @@
    // 16,用户开阀后管道内没有水,自动关阀。管道不出水自动关阀
    public Byte type ;
    public Double totalAmount; //累计流量:5字节BCD码,取值范围0~9999999999,单位为m3。
    public String cardNo ;//IC卡编号
    public String icAddr ;//ic卡地址
    public String icCardNo;//IC卡编号
    public String icCardAddr;//ic卡地址
    public Double remainMoney;//剩余金额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元
    public String openDt ;//用水户开阀时间:6字节BCD码,顺序是年月日时分秒,其中公元年=2000+年。
    public String rtuDt ;//控制器时钟
@@ -27,10 +27,10 @@
        sb.append(totalAmount==null?"":totalAmount);
        sb.append("\n");
        sb.append("      IC卡编号:");
        sb.append(cardNo);
        sb.append(icCardNo);
        sb.append("\n");
        sb.append("      ic卡地址:");
        sb.append(icAddr);
        sb.append(icCardAddr);
        sb.append("\n");
        sb.append("      å‰©ä½™é‡‘额(元):");
        sb.append(remainMoney ==null?"": remainMoney);
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java
@@ -10,7 +10,7 @@
    public Double waterPress; //水压:4字节BCD码,取值范围0~999999.99,单位为KPa。
    public Double batteryVolt;//蓄电池电压:4字节BCD码,取值范围0~99.99,单位为V。
    public Double sunVolt ;//太阳能电压:4字节BCD码,取值范围0~99.99,单位为V。
    public Integer signal; //信号强度:1字节BCD码,取值范围0~99。
    public Integer signalValue; //信号强度:1字节BCD码,取值范围0~99。
    public String rtuDt ;//控制器时钟
    public DataAlarmVo alarmVo ;//报警
    public DataStateVo stateVo ;//状态
@@ -36,7 +36,7 @@
        sb.append(sunVolt==null?"":sunVolt);
        sb.append("\n");
        sb.append("      ä¿¡å·å¼ºåº¦ï¼š");
        sb.append(signal==null?"":signal);
        sb.append(signalValue ==null?"": signalValue);
        sb.append("\n");
        sb.append("      æŽ§åˆ¶å™¨æ—¶é’Ÿï¼š");
        sb.append(rtuDt==null?"":rtuDt);
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java
@@ -4,20 +4,20 @@
@Data
public class DataStateVo  {
    public Byte idCard ;// è“„电池电压
    public Byte work;//工作状态
    public Byte icCard;// IC卡功能
    public Byte working;//工作状态
    public Byte valve ;//阀门
    public String toString(){
        StringBuilder str = new StringBuilder() ;
        str.append("      çŠ¶æ€:\n");
        str.append("         IC å¡åŠŸèƒ½ï¼š");
        str.append(idCard==null?"":(idCard==1?"有效":"无效"));
        str.append(icCard ==null?"":(icCard ==1?"有效":"无效"));
        str.append("\n");
        str.append("         å·¥ä½œçŠ¶æ€ï¼š");
        str.append(work ==null?"":(work==1?"启动":"停止"));
        str.append(working ==null?"":(working ==1?"启动":"停止"));
        str.append("\n");
        str.append("         é˜€é—¨ï¼š");
        str.append("         é˜€é—¨çŠ¶æ€ï¼š");
        str.append(valve==null?"":(valve==1?"打开":"关闭"));
        return str.toString() ;
    }
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
@@ -116,11 +116,11 @@
        cdData.totalAmount += tpInt * 100000000.0 ;
        //用水户号数据格式:5字节BCD码低位在前高位在后。
        cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
        cdData.icCardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
        index += 5 ;
        //IC卡号格式:4字节HEX码低位在前高位在后。
        cdData.cardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
        cdData.icCardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
        index += 4 ;
        //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。
@@ -174,11 +174,11 @@
        cdData.totalAmount += tpInt * 100000000.0 ;
        //用水户号数据格式:5字节BCD码低位在前高位在后。
        cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
        cdData.IcCardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
        index += 5 ;
        //IC卡号格式:4字节HEX码低位在前高位在后。
        cdData.cardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
        cdData.IcCardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
        index += 4 ;
        //用水户余额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元。
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
@@ -206,10 +206,10 @@
        }
        if(hasSignal){
            //信号强度:1字节BCD码,取值范围0~99。
            cdData.signal = 0 ;
            cdData.signalValue = 0 ;
            int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
            index++ ;
            cdData.signal += tpInt  ;
            cdData.signalValue += tpInt  ;
        }
        if(hasAlarmStatus){
            //报警数据
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java
@@ -27,8 +27,8 @@
        DataStateVo avo = new DataStateVo() ;
        byte b = bs[index] ;
        index++ ;
        avo.idCard = (byte)(b & 0x4) ;
        avo.work = (byte)(b & 0x8) ;
        avo.icCard = (byte)(b & 0x4) ;
        avo.working = (byte)(b & 0x8) ;
        avo.valve = (byte)(b & 0x20) ;
        return avo ;
    }
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java
@@ -45,11 +45,19 @@
    List<VoController> getControllers(Map<?, ?> params);
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨åœ°å€èŽ·å–æŽ§åˆ¶å™¨åˆ—è¡¨
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取控制器列表
     * @param rtuAddr
     * @return
     */
    List<Map<String, Object>> getControllersByAddr(@Param("rtuAddr") String rtuAddr);
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取控制器列表
     * @param rtuAddr
     * @return
     */
    List<PrController> getControllersByRtuAddrAndIntakeNotNull(@Param("rtuAddr") String rtuAddr);
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号逻辑删除控制
@@ -64,4 +72,18 @@
     * @return
     */
    Integer getRecordCountOfController(@Param("controllerId") Long controllerId);
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取已绑定记录数
     * @param controllerId
     * @return
     */
    Integer getBindedCount(@Param("controllerId") Long controllerId);
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号删除取水口编号
     * @param controllerId
     * @return
     */
    Integer deleteIntakeId(@Param("controllerId") Long controllerId);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -11,7 +12,7 @@
 * @Date 2024/1/15 15:27
 * @LastEditTime 2024/1/15 15:27
 * @Description
 */
 */
@Mapper
public interface PrControllerTrampMapper extends BaseMapper<PrControllerTramp> {
    /**
@@ -47,7 +48,7 @@
     * @param rutAddr æŽ§åˆ¶å™¨åœ°å€
     * @return object by æŽ§åˆ¶å™¨åœ°å€
     */
    List<PrControllerTramp> selectPrControllerTrampByRtuAddr(String rutAddr);
    List<PrControllerTramp> getPrControllerTrampByRtuAddr(String rutAddr);
    /**
     * update record selective
@@ -62,4 +63,18 @@
     * @return update count
     */
    int updateByPrimaryKey(PrControllerTramp record);
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取流浪控制器地址
     * @param controllerId æµæµªæŽ§åˆ¶å™¨ç¼–号
     * @return è®°å½•数量
     */
    //String getTrampRtuAddr(@Param("controllerId") Long controllerId);
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取流浪控制器信息
     * @param controllerId
     * @return
     */
    PrControllerTramp getTrampControllerInfo(@Param("controllerId") Long controllerId);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrIntakeMapper.java
@@ -104,4 +104,10 @@
     * @return  Level  åŒºåŸŸç­‰çº§
     */
    Integer getLevelByRegionId(long regionId);
    /**
     * èŽ·å–æœªç»‘æŽ§åˆ¶å™¨çš„å–æ°´å£åˆ—è¡¨
     * @return
     */
    List<Map<String, Object>> getNoBindingIntakes();
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateHistoryMapper.java
New file
@@ -0,0 +1,56 @@
package com.dy.pipIrrGlobal.daoRm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
import org.apache.ibatis.annotations.Mapper;
/**
 * @Author liurunyu
 * @Date 2024/1/16 11:18
 * @LastEditTime 2024/1/16 11:18
 * @Description
 */
@Mapper
public interface RmAlarmStateHistoryMapper  extends BaseMapper<RmAlarmStateHistory> {
    /**
     * delete by primary key
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Long id);
    /**
     * insert record to table
     * @param record the record
     * @return insert count
     */
    int insert(RmAlarmStateHistory record);
    /**
     * insert record to table selective
     * @param record the record
     * @return insert count
     */
    int insertSelective(RmAlarmStateHistory record);
    /**
     * select by primary key
     * @param id primary key
     * @return object by primary key
     */
    RmAlarmStateHistory selectByPrimaryKey(Long id);
    /**
     * update record selective
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RmAlarmStateHistory record);
    /**
     * update record
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmAlarmStateHistory record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAlarmStateLastMapper.java
New file
@@ -0,0 +1,65 @@
package com.dy.pipIrrGlobal.daoRm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * @Author liurunyu
 * @Date 2024/1/16 11:18
 * @LastEditTime 2024/1/16 11:18
 * @Description
 */
@Mapper
public interface RmAlarmStateLastMapper  extends BaseMapper<RmAlarmStateLast> {
    /**
     * delete by primary key
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Long id);
    /**
     * insert record to table
     * @param record the record
     * @return insert count
     */
    int insert(RmAlarmStateLast record);
    /**
     * insert record to table selective
     * @param record the record
     * @return insert count
     */
    int insertSelective(RmAlarmStateLast record);
    /**
     * select by primary key
     * @param id primary key
     * @return object by primary key
     */
    RmAlarmStateLast selectByPrimaryKey(Long id);
    /**
     * select by rtuAddr
     * @param rtuAddr rtuAddr
     * @return object by rtuAddr
     */
    List<RmAlarmStateLast> selectByRtuAddr(String rtuAddr);
    /**
     * update record selective
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RmAlarmStateLast record);
    /**
     * update record
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmAlarmStateLast record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportHistoryMapper.java
New file
@@ -0,0 +1,56 @@
package com.dy.pipIrrGlobal.daoRm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory;
import org.apache.ibatis.annotations.Mapper;
/**
 * @Author liurunyu
 * @Date 2024/1/16 14:59
 * @LastEditTime 2024/1/16 14:59
 * @Description
 */
@Mapper
public interface RmAutoReportHistoryMapper extends BaseMapper<RmAutoReportHistory> {
    /**
     * delete by primary key
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Long id);
    /**
     * insert record to table
     * @param record the record
     * @return insert count
     */
    int insert(RmAutoReportHistory record);
    /**
     * insert record to table selective
     * @param record the record
     * @return insert count
     */
    int insertSelective(RmAutoReportHistory record);
    /**
     * select by primary key
     * @param id primary key
     * @return object by primary key
     */
    RmAutoReportHistory selectByPrimaryKey(Long id);
    /**
     * update record selective
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RmAutoReportHistory record);
    /**
     * update record
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmAutoReportHistory record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmAutoReportLastMapper.java
New file
@@ -0,0 +1,65 @@
package com.dy.pipIrrGlobal.daoRm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * @Author liurunyu
 * @Date 2024/1/16 14:45
 * @LastEditTime 2024/1/16 14:45
 * @Description
 */
@Mapper
public interface RmAutoReportLastMapper extends BaseMapper<RmAutoReportLast> {
    /**
     * delete by primary key
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Long id);
    /**
     * insert record to table
     * @param record the record
     * @return insert count
     */
    int insert(RmAutoReportLast record);
    /**
     * insert record to table selective
     * @param record the record
     * @return insert count
     */
    int insertSelective(RmAutoReportLast record);
    /**
     * select by primary key
     * @param id primary key
     * @return object by primary key
     */
    RmAutoReportLast selectByPrimaryKey(Long id);
    /**
     * select by rtuAddr
     * @param rtuAddr rtuAddr
     * @return object by rtuAddr
     */
    List<RmAutoReportLast> selectByRtuAddr(String rtuAddr);
    /**
     * update record selective
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RmAutoReportLast record);
    /**
     * update record
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmAutoReportLast record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountMapper.java
New file
@@ -0,0 +1,55 @@
package com.dy.pipIrrGlobal.daoRm;
import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount;
import org.apache.ibatis.annotations.Mapper;
/**
 * @Author liurunyu
 * @Date 2024/1/17 9:07
 * @LastEditTime 2024/1/17 9:07
 * @Description
 */
@Mapper
public interface RmIntakeAmountMapper {
    /**
     * delete by primary key
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Long id);
    /**
     * insert record to table
     * @param record the record
     * @return insert count
     */
    int insert(RmIntakeAmount record);
    /**
     * insert record to table selective
     * @param record the record
     * @return insert count
     */
    int insertSelective(RmIntakeAmount record);
    /**
     * select by primary key
     * @param id primary key
     * @return object by primary key
     */
    RmIntakeAmount selectByPrimaryKey(Long id);
    /**
     * update record selective
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RmIntakeAmount record);
    /**
     * update record
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmIntakeAmount record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveReportMapper.java
New file
@@ -0,0 +1,56 @@
package com.dy.pipIrrGlobal.daoRm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport;
import org.apache.ibatis.annotations.Mapper;
/**
 * @Author liurunyu
 * @Date 2024/1/16 19:44
 * @LastEditTime 2024/1/16 19:44
 * @Description
 */
@Mapper
public interface RmOpenCloseValveReportMapper extends BaseMapper<RmOpenCloseValveReport> {
    /**
     * delete by primary key
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Long id);
    /**
     * insert record to table
     * @param record the record
     * @return insert count
     */
    int insert(RmOpenCloseValveReport record);
    /**
     * insert record to table selective
     * @param record the record
     * @return insert count
     */
    int insertSelective(RmOpenCloseValveReport record);
    /**
     * select by primary key
     * @param id primary key
     * @return object by primary key
     */
    RmOpenCloseValveReport selectByPrimaryKey(Long id);
    /**
     * update record selective
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RmOpenCloseValveReport record);
    /**
     * update record
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmOpenCloseValveReport record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrController.java
@@ -8,6 +8,7 @@
import com.dy.common.po.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.*;
import org.hibernate.validator.constraints.Length;
@@ -43,12 +44,19 @@
    private Long id;
    /**
     * å–水口ID
     */
    @Schema(description = "取水口ID", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "取水口ID不能为空")
    private Long intakeId;
    /**
     * æŽ§åˆ¶å™¨åœ°å€
     */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "控制器地址不能为空")
    @Length(message = "控制器地址不大于{max}字",max = 11)
    private String rtuaddr;
    private String rtuAddr;
    /**
     * é€šè®¯åè®®
@@ -59,22 +67,16 @@
    private String protocol;
    /**
     * åœ¨çº¿çŠ¶æ€;1-在线,2-离线
     * å‘现日期时间
     */
    @Schema(description = "在线状态", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Byte onlinestate;
    /**
     * æœ€è¿‘上报时间
     */
    @Schema(description = "最近上报时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Date reporttime;
    @Schema(description = "发现日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Date findDt;
    /**
     * æ·»åŠ æ–¹å¼;1-系统自动,2-手动
     */
    @Schema(description = "添加方式", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Byte addways;
    private Byte addWays;
    /**
     * æ“ä½œäººID
@@ -86,7 +88,7 @@
     * æ“ä½œæ—¶é—´
     */
    @Schema(description = "操作时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Date operatedt;
    private Date operateDt;
    /**
     * é€»è¾‘删除标识;0-未删除,1-删除
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java
@@ -15,8 +15,11 @@
import com.dy.common.po.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.*;
import org.hibernate.validator.constraints.Length;
import java.util.Date;
/**
 * æµæµªæŽ§åˆ¶å™¨
@@ -39,7 +42,7 @@
    public Long id;
    /**
     * é€šè®¯åè®®
     * æŽ§åˆ¶å™¨åœ°å€
     */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "控制器地址不能为空")
@@ -55,10 +58,10 @@
    public String protocol;
    /**
     * é€šè®¯åè®®
     * å‘现时间
     */
    @Schema(description = "发现时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "发现时间不能为空")
    public String findDt;//发现时间( yyyy-mm-dd HH:MM:SS)
    @NotNull(message = "发现时间不能为空")
    public Date findDt;//发现时间( yyyy-mm-dd HH:MM:SS)
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateHistory.java
New file
@@ -0,0 +1,107 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/1/16 11:03
 * @LastEditTime 2024/1/16 11:03
 * @Description æŽ§åˆ¶å™¨æŠ¥è­¦ä¸ŽçŠ¶æ€ï¼ˆåŽ†å²ï¼‰
 */
@TableName(value="rm_alarm_state_history", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "控制器报警与状态(历史)")
public class RmAlarmStateHistory implements BaseEntity {
    public static final long serialVersionUID = 202401161104001L;
    /**
     * ä¸»é”®
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
     * æŽ§åˆ¶å™¨å®žä½“ID(外键)
     */
    @Schema(description = "控制器实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerid;
    /**
     * å–水口ID(外键)
     */
    @Schema(description = "取水口实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeid;
    /**
     * æŽ§åˆ¶å™¨åœ°å€
     */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    public String rtuaddr;
    /**
     * ä¸ŠæŠ¥æ—¥æœŸæ—¶é—´
     */
    @Schema(description = "上报日期时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dt;
    /**
     * æŠ¥è­¦-蓄电池电压(1报警,0正常)
     */
    @Schema(description = "报警-蓄电池电压(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte bateryvolt;
    /**
     * æŠ¥è­¦-漏损(1报警,0正常)
     */
    @Schema(description = "报警-蓄电池电压(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte loss;
    /**
     * æŠ¥è­¦-仪表(1报警,0正常)
     */
    @Schema(description = "报警-仪表(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte meter;
    /**
     * æŠ¥è­¦-阀门(1报警,0正常)
     */
    @Schema(description = "报警-阀门(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte valve;
    /**
     * çŠ¶æ€-IC卡功能(1有效、0无效)
     */
    @Schema(description = "状态-IC卡功能(1有效、0无效)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte iccard;
    /**
     * çŠ¶æ€-工作(1启动、0停止)
     */
    @Schema(description = "报警-仪表(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte working;
    /**
     * çŠ¶æ€-阀门(1打开、0关闭)
     */
    @Schema(description = "状态-阀门(1打开、0关闭)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte valvestate;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java
New file
@@ -0,0 +1,109 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/1/16 10:39
 * @LastEditTime 2024/1/16 10:39
 * @Description æŽ§åˆ¶å™¨æŠ¥è­¦ä¸ŽçŠ¶æ€ï¼ˆæœ€æ–°ï¼‰
 */
@TableName(value="rm_alarm_state_last", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "控制器报警与状态(最新)")
public class RmAlarmStateLast implements BaseEntity {
    public static final long serialVersionUID = 202401161041001L;
    /**
    * ä¸»é”®
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
    * æŽ§åˆ¶å™¨å®žä½“ID(外键)
    */
    @Schema(description = "控制器实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerid;
    /**
     * å–水口ID(外键)
     */
    @Schema(description = "取水口实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeid;
    /**
    * æŽ§åˆ¶å™¨åœ°å€
    */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    public String rtuaddr;
    /**
    * ä¸ŠæŠ¥æ—¥æœŸæ—¶é—´
    */
    @Schema(description = "上报日期时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dt;
    /**
    * æŠ¥è­¦-蓄电池电压(1报警,0正常)
    */
    @Schema(description = "报警-蓄电池电压(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte bateryvolt;
    /**
    * æŠ¥è­¦-漏损(1报警,0正常)
    */
    @Schema(description = "报警-蓄电池电压(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte loss;
    /**
    * æŠ¥è­¦-仪表(1报警,0正常)
    */
    @Schema(description = "报警-仪表(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte meter;
    /**
    * æŠ¥è­¦-阀门(1报警,0正常)
    */
    @Schema(description = "报警-阀门(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte valve;
    /**
    * çŠ¶æ€-IC卡功能(1有效、0无效)
    */
    @Schema(description = "状态-IC卡功能(1有效、0无效)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte iccard;
    /**
    * çŠ¶æ€-工作(1启动、0停止)
    */
    @Schema(description = "报警-仪表(1报警,0正常)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte working;
    /**
    * çŠ¶æ€-阀门(1打开、0关闭)
    */
    @Schema(description = "状态-阀门(1打开、0关闭)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte valvestate;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java
New file
@@ -0,0 +1,115 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/1/16 14:59
 * @LastEditTime 2024/1/16 14:59
 * @Description ç»ˆç«¯è‡ªæŠ¥ï¼ˆæœ€æ–°ï¼‰
 */
@TableName(value="rm_alarm_state_history", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "控制器自报(历史)")
public class RmAutoReportHistory implements BaseEntity {
    public static final long serialVersionUID = 202401161501001L;
    /**
     * ä¸»é”®
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
     * æŽ§åˆ¶å™¨å®žä½“ID(外键)
     */
    @Schema(description = "控制器实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerid;
    /**
     * å–水口ID(外键)
     */
    @Schema(description = "取水口实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeid;
    /**
     * æŽ§åˆ¶å™¨åœ°å€
     */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    public String rtuaddr;
    /**
     * ä¸ŠæŠ¥æ—¥æœŸæ—¶é—´
     */
    @Schema(description = "上报日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dt;
    /**
     * æŽ§åˆ¶å™¨æ—¶é’Ÿ
     */
    @Schema(description = "控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date rtudt;
    /**
     * çž¬æ—¶æµé‡ï¼š5字节BCD码,取值范围0~9999999.999,单位为m3/h
     */
    @Schema(description = "瞬时流量:5字节BCD码,取值范围0~9999999.999,单位为m3/h", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double instantamount;
    /**
     * ç´¯è®¡æµé‡ï¼š5字节BCD码,取值范围0~9999999999,单位为m3
     */
    @Schema(description = "累计流量:5字节BCD码,取值范围0~9999999999,单位为m3", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double totalamount;
    /**
     * æŸå¤±æµé‡ï¼š5字节BCD码,取值范围0~9999999999,单位为m3
     */
    @Schema(description = "损失流量:5字节BCD码,取值范围0~9999999999,单位为m3", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double lossamount;
    /**
     * æ°´åŽ‹ï¼š4字节BCD码,取值范围0~999999.99,单位为KPa
     */
    @Schema(description = "水压:4字节BCD码,取值范围0~999999.99,单位为KPa", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterpress;
    /**
     * è“„电池电压:4字节BCD码,取值范围0~99.99,单位为V
     */
    @Schema(description = "蓄电池电压:4字节BCD码,取值范围0~99.99,单位为V", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double batteryvolt;
    /**
     * å¤ªé˜³èƒ½ç”µåŽ‹:4字节BCD码,取值范围0~99.99,单位为V
     */
    @Schema(description = "太阳能电压:4字节BCD码,取值范围0~99.99,单位为V", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double sunvolt;
    /**
     * ä¿¡å·å¼ºåº¦ï¼š1字节BCD码,取值范围0~99
     */
    @Schema(description = "信号强度:1字节BCD码,取值范围0~99", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Integer signalvalue;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java
New file
@@ -0,0 +1,115 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/1/16 14:45
 * @LastEditTime 2024/1/16 14:45
 * @Description ç»ˆç«¯è‡ªæŠ¥ï¼ˆæœ€æ–°ï¼‰
 */
@TableName(value="rm_alarm_state_last", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "控制器自报(最新)")
public class RmAutoReportLast implements BaseEntity {
    public static final long serialVersionUID = 202401161446001L;
    /**
     * ä¸»é”®
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
     * æŽ§åˆ¶å™¨å®žä½“ID(外键)
     */
    @Schema(description = "控制器实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerid;
    /**
     * å–水口ID(外键)
     */
    @Schema(description = "取水口实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeid;
    /**
     * æŽ§åˆ¶å™¨åœ°å€
     */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    public String rtuaddr;
    /**
     * ä¸ŠæŠ¥æ—¥æœŸæ—¶é—´
     */
    @Schema(description = "上报日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dt;
    /**
    * æŽ§åˆ¶å™¨æ—¶é’Ÿ
    */
    @Schema(description = "控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date rtudt;
    /**
    * çž¬æ—¶æµé‡ï¼š5字节BCD码,取值范围0~9999999.999,单位为m3/h
    */
    @Schema(description = "瞬时流量:5字节BCD码,取值范围0~9999999.999,单位为m3/h", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double instantamount;
    /**
    * ç´¯è®¡æµé‡ï¼š5字节BCD码,取值范围0~9999999999,单位为m3
    */
    @Schema(description = "累计流量:5字节BCD码,取值范围0~9999999999,单位为m3", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double totalamount;
    /**
    * æŸå¤±æµé‡ï¼š5字节BCD码,取值范围0~9999999999,单位为m3
    */
    @Schema(description = "损失流量:5字节BCD码,取值范围0~9999999999,单位为m3", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double lossamount;
    /**
    * æ°´åŽ‹ï¼š4字节BCD码,取值范围0~999999.99,单位为KPa
    */
    @Schema(description = "水压:4字节BCD码,取值范围0~999999.99,单位为KPa", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double waterpress;
    /**
    * è“„电池电压:4字节BCD码,取值范围0~99.99,单位为V
    */
    @Schema(description = "蓄电池电压:4字节BCD码,取值范围0~99.99,单位为V", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double batteryvolt;
    /**
    * å¤ªé˜³èƒ½ç”µåŽ‹:4字节BCD码,取值范围0~99.99,单位为V
    */
    @Schema(description = "太阳能电压:4字节BCD码,取值范围0~99.99,单位为V", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double sunvolt;
    /**
    * ä¿¡å·å¼ºåº¦ï¼š1字节BCD码,取值范围0~99
    */
    @Schema(description = "信号强度:1字节BCD码,取值范围0~99", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Integer signalvalue;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmount.java
New file
@@ -0,0 +1,90 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/1/17 9:07
 * @LastEditTime 2024/1/17 9:07
 * @Description å–水口取水量
 */
@TableName(value="rm_intake_amount", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "取水口取水量")
public class RmIntakeAmount implements BaseEntity {
    public static final long serialVersionUID = 202401170908001L;
    /**
     * ä¸»é”®
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
     * å–水口ID(外键)
     */
    @Schema(description = "取水口实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeid;
    /**
    * ç´¯è®¡å–水量(不包括漏损水量)
    */
    @Schema(description = "累计取水量(不包括漏损水量)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double amount;
    /**
    * ç´¯è®¡æ¼æŸæ°´é‡
    */
    @Schema(description = "累计漏损水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
   public Double loss;
    /**
    * æœ€åŽè®¡æ°´é‡çš„æŽ§åˆ¶å™¨ID(外键)
    */
    @Schema(description = "控制器实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controlleridlast;
    /**
    * æœ€åŽè®¡æ°´é‡æ—¥æœŸ
    */
    @Schema(description = "最后计水量日期", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date dtlast;
    /**
    * æœ€åŽè®¡æ°´é‡æ—¶æŽ§åˆ¶å™¨å–水量
    */
    @Schema(description = "最后计水量时控制器取水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double amountlast;
    /**
    * æœ€åŽè®¡æ°´é‡æ—¶æŽ§åˆ¶å™¨ç´¯è®¡æ°´é‡
    */
    @Schema(description = "最后计水量时控制器累计水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double totalamountlast;
    /**
    * æœ€åŽè®¡æ°´é‡æ¥æºï¼ˆ1开阀工作报,2关阀报,3自报)
    */
    @Schema(description = "最后计水量来源(1开阀工作报,2关阀报,3自报)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte resourcetypelast;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveReport.java
New file
@@ -0,0 +1,172 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.po.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/1/16 19:44
 * @LastEditTime 2024/1/16 19:44
 * @Description æŽ§åˆ¶å™¨å¼€å…³é˜€è®°å½•
 */
@TableName(value="rm_open_close_valve_report", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "控制器开关阀记录")
public class RmOpenCloseValveReport implements BaseEntity {
    public static final long serialVersionUID = 202401161929001L;
    /**
     * ä¸»é”®
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
    * æŽ§åˆ¶å™¨å®žä½“ID(外键)
    */
    @Schema(description = "控制器实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long controllerid;
    /**
    * å–水口实体ID(外键)
    */
    @Schema(description = "取水口实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeid;
    /**
    * æŽ§åˆ¶å™¨åœ°å€
    */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    public String rtuaddr;
    /**
    * å¼€é˜€æ•°æ®æŽ¥æ”¶æ—¶é—´
    */
    @Schema(description = "开阀数据接收时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date opdt;
    /**
    * å¼€é˜€ç±»åž‹
    */
    @Schema(description = "开阀类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte optype;
    /**
    * å¼€é˜€æ—¶ç´¯è®¡æµé‡
    */
    @Schema(description = "开阀时累计流量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double optotalamount;
    /**
    * å¼€é˜€IC卡编号
    */
    @Schema(description = "开阀IC卡编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String opiccardno;
    /**
    * å¼€é˜€ic卡地址
    */
    @Schema(description = "开阀ic卡地址", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String opiccardaddr;
    /**
    * å¼€é˜€æ—¶å‰©ä½™é‡‘额
    */
    @Schema(description = "开阀时剩余金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double opremainmoney;
    /**
    * å¼€é˜€æ—¶æŽ§åˆ¶å™¨æ—¶é’Ÿ
    */
    @Schema(description = "开阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date opendt;
    /**
    * å…³é˜€æ•°æ®æŽ¥æ”¶æ—¥æœŸæ—¶é—´
    */
    @Schema(description = "阀数据接收日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date cldt;
    /**
    * å…³é˜€ç±»åž‹
    */
    @Schema(description = "关阀类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte cltype;
    /**
    * å…³é˜€æ—¶ç´¯è®¡æµé‡
    */
    @Schema(description = "关阀时累计流量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double cltotalamount;
    /**
     * å…³é˜€æ—¶IC卡编号
     */
    @Schema(description = "关阀时IC卡编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String cliccardno;
    /**
    * å…³é˜€æ—¶IC卡地址
    */
    @Schema(description = "关阀时IC卡地址", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String cliccardaddr;
    /**
    * å…³é˜€æ—¶å‰©ä½™é‡‘额
    */
    @Schema(description = "关阀时剩余金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double clremainmoney;
    /**
    * å…³é˜€æŠ¥ä¸­æœ¬æ¬¡ç”¨æ°´é‡
    */
    @Schema(description = "关阀报中本次用水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double clthisamount;
    /**
    * å…³é˜€æŠ¥ä¸­æœ¬æ¬¡æ¶ˆè´¹é‡‘额
    */
    @Schema(description = "关阀报中本次消费金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double clthismoney;
    /**
    * å…³é˜€æŠ¥ä¸­æœ¬æ¬¡ç”¨æ°´æ—¶é•¿ï¼ˆåˆ†é’Ÿï¼‰
    */
    @Schema(description = "关阀报中本次用水时长(分钟)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Integer clthistime;
    /**
    * å…³é˜€æŠ¥ä¸­çš„开阀时控制器时钟
    */
    @Schema(description = "关阀报中的开阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date clopendt;
    /**
    * å…³é˜€æ—¶æŽ§åˆ¶å™¨æ—¶é’Ÿ
    */
    @Schema(description = "关阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date closedt;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/Constant.java
@@ -1,7 +1,9 @@
package com.dy.pipIrrGlobal.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Constant {
    /**
@@ -11,6 +13,14 @@
    public static final Integer no = 0 ;
    public static final String YES = "1" ;
    public static final String NO = "0" ;
    // é¡¹ç›®ç¼–号
    public static final Integer projectCode_ym = 100;
    public static final Integer projectCode_pj = 101;
    // åè®®åˆ—表
    public static final String[] protocol = {"DYJS_2023", "DYJS_2024"};
    public static List<String[]> yesNo(){
        List<String[]> list = new ArrayList<>() ;
        list.add(new String[]{YES , "是"}) ;
@@ -42,4 +52,51 @@
        return null ;
    }
    // 1、刷卡开阀;2刷卡关阀;3、中心站开阀;4、中心站关阀;5、欠费关阀;
    // 6、流量计故障关阀;7、紧急关阀;8、用户远程开阀;9、用户远程关阀;
    // 16,用户开阀后管道内没有水,自动关阀。管道不出水自动关阀
    public static final Integer valveOpenByIC = 1 ;//刷卡开阀
    public static final Integer valveCloseByIC = 2 ;//刷卡关阀
    public static final Integer valveOpenByCenter = 3 ;//中心站开阀
    public static final Integer valveCloseByCenter = 4 ;//中心站关阀
    public static final Integer valveCloseByFee = 5 ;//欠费关阀
    public static final Integer valveCloseByFlowMeterFault = 6 ;//流量计故障关阀
    public static final Integer valveCloseByEmergency = 7 ;//紧急关阀
    public static final Integer valveOpenByRemoteUser = 8 ;//用户远程开阀
    public static final Integer valveCloseByRemoteUser = 9 ;//用户远程关阀;
    public static final Integer valveCloseByNoWater = 16 ;//管道无水自动关阀;
    public static Map<Integer, String> openCloseValveTypes(){
        Map<Integer, String> map = new HashMap<>() ;
        map.put(valveOpenByIC, "刷卡开阀");
        map.put(valveCloseByIC , "刷卡关阀") ;
        map.put(valveOpenByCenter , "中心站开阀") ;
        map.put(valveCloseByCenter , "中心站关阀") ;
        map.put(valveCloseByFee , "欠费关阀") ;
        map.put(valveCloseByFlowMeterFault , "流量计故障关阀") ;
        map.put(valveCloseByEmergency , "紧急关阀") ;
        map.put(valveOpenByRemoteUser , "用户远程开阀") ;
        map.put(valveCloseByRemoteUser , "用户远程关阀") ;
        map.put(valveCloseByNoWater , "管道无水自动关阀") ;
        return map ;
    }
    public static String openCloseValveTypeName(Integer type){
        if(type != null){
            return switch (type.intValue()) {
                case 1 -> "刷卡开阀";
                case 2 -> "刷卡关阀";
                case 3 -> "中心站开阀";
                case 4 -> "中心站关阀";
                case 5 -> "欠费关阀";
                case 6 -> "流量计故障关阀";
                case 7 -> "紧急关阀";
                case 8 -> "用户远程开阀";
                case 9 -> "用户远程关阀";
                case 16 -> "管道无水自动关阀";
                default -> "未知";
            };
        }
        return null ;
    }
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoController.java
@@ -32,11 +32,6 @@
    @ColumnWidth(15)
    private String rtuAddr;
    @Schema(title = "在线状态")
    @ExcelProperty("在线状态")
    @ColumnWidth(15)
    private String onlineState;
    @Schema(title = "绑定取水口")
    @ExcelProperty("绑定取水口")
    @ColumnWidth(10)
@@ -49,8 +44,8 @@
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(title = "最近上报时间")
    @ExcelProperty("最近上报时间")
    @Schema(title = "发现日期时间")
    @ExcelProperty("发现日期时间")
    @ColumnWidth(30)
    private Date reportTime;
    private Date findDt;
}
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -114,9 +114,9 @@
        idSuffix: 7
#项目编号
projectCode:
    ym: 100
    pj: 101
#projectCode:
#    ym: 100
#    pj: 101
#通讯协议
protocol: DYJS_2023,DYJS_2024
#protocol: DYJS_2023,DYJS_2024
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml
@@ -5,18 +5,28 @@
    <!--@mbg.generated-->
    <!--@Table pr_controller-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
    <result column="intakeId" jdbcType="BIGINT" property="intakeId" />
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuAddr" />
    <result column="protocol" jdbcType="VARCHAR" property="protocol" />
    <result column="onlineState" jdbcType="TINYINT" property="onlinestate" />
    <result column="reportTime" jdbcType="TIMESTAMP" property="reporttime" />
    <result column="addWays" jdbcType="TINYINT" property="addways" />
    <result column="findDt" jdbcType="TIMESTAMP" property="findDt" />
    <result column="addWays" jdbcType="TINYINT" property="addWays" />
    <result column="operator" jdbcType="BIGINT" property="operator" />
    <result column="operateDt" jdbcType="TIMESTAMP" property="operatedt" />
    <result column="operateDt" jdbcType="TIMESTAMP" property="operateDt" />
    <result column="deleted" jdbcType="TINYINT" property="deleted" />
  </resultMap>
  <resultMap id="PartResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrController">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="intakeId" jdbcType="BIGINT" property="intakeId" />
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuAddr" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, rtuAddr, protocol, onlineState, reportTime, addWays, `operator`, operateDt, deleted
    id, intakeId, rtuAddr, protocol, findDt, addWays, `operator`, operateDt, deleted
  </sql>
  <sql id="Part_Column_List">
    <!--@mbg.generated-->
    id, rtuAddr, intakeId
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
@@ -32,13 +42,13 @@
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController">
    <!--@mbg.generated-->
    insert into pr_controller (id, rtuAddr, protocol,
      onlineState, reportTime, addWays,
    insert into pr_controller (id, intakeId, rtuAddr,
      protocol, findDt, addWays,
      `operator`, operateDt, deleted
      )
    values (#{id,jdbcType=BIGINT}, #{rtuaddr,jdbcType=VARCHAR}, #{protocol,jdbcType=VARCHAR},
      #{onlinestate,jdbcType=TINYINT}, #{reporttime,jdbcType=TIMESTAMP}, #{addways,jdbcType=TINYINT},
      #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT}
    values (#{id,jdbcType=BIGINT}, #{intakeId,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR},
      #{protocol,jdbcType=VARCHAR}, #{findDt,jdbcType=TIMESTAMP}, #{addWays,jdbcType=TINYINT},
      #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController">
@@ -48,25 +58,25 @@
      <if test="id != null">
        id,
      </if>
      <if test="rtuaddr != null">
      <if test="intakeId != null">
        intakeId,
      </if>
      <if test="rtuAddr != null">
        rtuAddr,
      </if>
      <if test="protocol != null">
        protocol,
      </if>
      <if test="onlinestate != null">
        onlineState,
      <if test="findDt != null">
        findDt,
      </if>
      <if test="reporttime != null">
        reportTime,
      </if>
      <if test="addways != null">
      <if test="addWays != null">
        addWays,
      </if>
      <if test="operator != null">
        `operator`,
      </if>
      <if test="operatedt != null">
      <if test="operateDt != null">
        operateDt,
      </if>
      <if test="deleted != null">
@@ -77,26 +87,26 @@
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        #{rtuaddr,jdbcType=VARCHAR},
      <if test="intakeId != null">
        #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="protocol != null">
        #{protocol,jdbcType=VARCHAR},
      </if>
      <if test="onlinestate != null">
        #{onlinestate,jdbcType=TINYINT},
      <if test="findDt != null">
        #{findDt,jdbcType=TIMESTAMP},
      </if>
      <if test="reporttime != null">
        #{reporttime,jdbcType=TIMESTAMP},
      </if>
      <if test="addways != null">
        #{addways,jdbcType=TINYINT},
      <if test="addWays != null">
        #{addWays,jdbcType=TINYINT},
      </if>
      <if test="operator != null">
        #{operator,jdbcType=BIGINT},
      </if>
      <if test="operatedt != null">
        #{operatedt,jdbcType=TIMESTAMP},
      <if test="operateDt != null">
        #{operateDt,jdbcType=TIMESTAMP},
      </if>
      <if test="deleted != null">
        #{deleted,jdbcType=TINYINT},
@@ -107,26 +117,26 @@
    <!--@mbg.generated-->
    update pr_controller
    <set>
      <if test="rtuaddr != null">
        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      <if test="intakeId != null">
        intakeId = #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        rtuAddr = #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="protocol != null">
        protocol = #{protocol,jdbcType=VARCHAR},
      </if>
      <if test="onlinestate != null">
        onlineState = #{onlinestate,jdbcType=TINYINT},
      <if test="findDt != null">
        findDt = #{findDt,jdbcType=TIMESTAMP},
      </if>
      <if test="reporttime != null">
        reportTime = #{reporttime,jdbcType=TIMESTAMP},
      </if>
      <if test="addways != null">
        addWays = #{addways,jdbcType=TINYINT},
      <if test="addWays != null">
        addWays = #{addWays,jdbcType=TINYINT},
      </if>
      <if test="operator != null">
        `operator` = #{operator,jdbcType=BIGINT},
      </if>
      <if test="operatedt != null">
        operateDt = #{operatedt,jdbcType=TIMESTAMP},
      <if test="operateDt != null">
        operateDt = #{operateDt,jdbcType=TIMESTAMP},
      </if>
      <if test="deleted != null">
        deleted = #{deleted,jdbcType=TINYINT},
@@ -137,26 +147,32 @@
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrController">
    <!--@mbg.generated-->
    update pr_controller
    set rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
    set intakeId = #{intakeId,jdbcType=BIGINT},
      rtuAddr = #{rtuAddr,jdbcType=VARCHAR},
      protocol = #{protocol,jdbcType=VARCHAR},
      onlineState = #{onlinestate,jdbcType=TINYINT},
      reportTime = #{reporttime,jdbcType=TIMESTAMP},
      addWays = #{addways,jdbcType=TINYINT},
      findDt = #{findDt,jdbcType=TIMESTAMP},
      addWays = #{addWays,jdbcType=TINYINT},
      `operator` = #{operator,jdbcType=BIGINT},
      operateDt = #{operatedt,jdbcType=TIMESTAMP},
      operateDt = #{operateDt,jdbcType=TIMESTAMP},
      deleted = #{deleted,jdbcType=TINYINT}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <!--根据指定获取控制器记录数-->
  <!--根据控制器编号删除取水口编号-->
  <update id="deleteIntakeId">
    UPDATE pr_controller SET intakeId = null WHERE id = ${controllerId}
  </update>
  <!--根据指定条件获取控制器记录数-->
  <select id="getRecordCount" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM pr_controller con
        INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id
        INNER JOIN pr_intake inta ON ic.intakeId = inta.id
        INNER JOIN pr_intake inta ON con.intakeId = inta.id
    <where>
      AND ic.operateType = 1
      AND deleted = 0
      <if test = "id != null and id > 0">
        AND con.id = ${id}
@@ -164,10 +180,6 @@
      <if test = "rtuAddr != null and rtuAddr !=''">
        AND con.rtuAddr like CONCAT('%',#{rtuAddr},'%')
      </if>
      <if test = "onlineState != null and onlineState > 0">
        AND con.onlineState = ${onlineState}
      </if>
      <if test = "bindNumber != null and bindNumber > 0">
@@ -176,22 +188,19 @@
    </where>
  </select>
  <!--根据指定获取控制器记录-->
  <!--根据指定条件获取控制器记录-->
  <select id="getControllers" resultType="com.dy.pipIrrGlobal.voPr.VoController">
    SELECT
        con.rtuAddr AS rtuAddr,
        (CASE
            WHEN con.onlineState = 1 THEN "在线"
            WHEN con.onlineState = 2 THEN "离线"
        END) AS onlineState,
        inta.name AS intakeName,
        (SELECT COUNT(*) FROM pr_intake_controller WHERE controllerId = con.id AND intakeId = inta.id AND operateType = 1) AS bindNumber,
        con.reportTime
        con.findDt
    FROM pr_controller con
        INNER JOIN pr_intake_controller ic ON ic.controllerId = con.id
        INNER JOIN pr_intake inta ON ic.intakeId = inta.id
        INNER JOIN pr_intake inta ON con.intakeId = inta.id
    <where>
      AND ic.operateType = 1
      AND deleted = 0
      <if test = "id != null and id > 0">
        AND con.id = ${id}
@@ -199,10 +208,6 @@
      <if test = "rtuAddr != null and rtuAddr !=''">
        AND con.rtuAddr like CONCAT('%',#{rtuAddr},'%')
      </if>
      <if test = "onlineState != null and onlineState > 0">
        AND con.onlineState = ${onlineState}
      </if>
      <if test = "bindNumber != null and bindNumber > 0">
@@ -213,12 +218,19 @@
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${pageCurr}, ${pageSize}
    </if>
  </select>
  <!--根据控制器地址获取控制器列表-->
  <select id="getControllersByAddr" resultType="java.util.Map">
    SELECT id, rtuAddr FROM pr_controller WHERE rtuAddr LIKE CONCAT('%',#{rtuAddr},'%')
    SELECT id, rtuAddr FROM pr_controller WHERE deleted = 0 AND rtuAddr LIKE CONCAT('%',#{rtuAddr},'%')
  </select>
  <!--根据控制器地址获取控制器列表-->
  <select id="getControllersByRtuAddrAndIntakeNotNull" parameterType="java.lang.String" resultMap="PartResultMap">
    SELECT
    <include refid="Part_Column_List">
    </include>
    FROM pr_controller WHERE deleted = 0 AND intakeId is not null AND rtuAddr=#{rtuAddr,jdbcType=VARCHAR}
  </select>
  <!--根据控制器编号逻辑删除控制-->
@@ -230,4 +242,9 @@
  <select id="getRecordCountOfController" resultType="java.lang.Integer">
    SELECT COUNT(*) AS recordCount FROM pr_controller WHERE deleted = 0 AND id = ${controllerId}
  </select>
  <!--根据控制器编号获取已绑定记录数-->
  <select id="getBindedCount" resultType="java.lang.Integer">
    SELECT COUNT(*) AS recordCount FROM pr_controller WHERE rtuAddr = (SELECT rtuAddr FROM pr_controller_tramp WHERE id = ${controllerId}) AND intakeId IS NOT NULL
  </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
@@ -7,7 +7,7 @@
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuAddr" />
    <result column="protocol" jdbcType="VARCHAR" property="protocol" />
    <result column="findDt" jdbcType="VARCHAR" property="findDt" />
    <result column="findDt" jdbcType="TIMESTAMP" property="findDt" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
@@ -20,13 +20,15 @@
    from pr_controller_tramp
    where id = #{id,jdbcType=BIGINT}
  </select>
  <select id="selectPrControllerTrampByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
  <select id="getPrControllerTrampByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from pr_controller_tramp
    where rtuAddr = #{rtuAddr,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from pr_controller_tramp
@@ -37,7 +39,7 @@
    insert into pr_controller_tramp (id, rtuAddr, protocol, 
      findDt)
    values (#{id,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{protocol,jdbcType=VARCHAR},
      #{findDt,jdbcType=VARCHAR})
      #{findDt,jdbcType=TIMESTAMP})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrControllerTramp">
    <!--@mbg.generated-->
@@ -67,7 +69,7 @@
        #{protocol,jdbcType=VARCHAR},
      </if>
      <if test="findDt != null">
        #{findDt,jdbcType=VARCHAR},
        #{findDt,jdbcType=TIMESTAMP},
      </if>
    </trim>
  </insert>
@@ -82,7 +84,7 @@
        protocol = #{protocol,jdbcType=VARCHAR},
      </if>
      <if test="findDt != null">
        findDt = #{findDt,jdbcType=VARCHAR},
        findDt = #{findDt,jdbcType=TIMESTAMP},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
@@ -92,7 +94,17 @@
    update pr_controller_tramp
    set rtuAddr = #{rtuAddr,jdbcType=VARCHAR},
      protocol = #{protocol,jdbcType=VARCHAR},
      findDt = #{findDt,jdbcType=VARCHAR}
      findDt = #{findDt,jdbcType=TIMESTAMP}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <!--根据控制器编号获取流浪控制器地址-->
<!--  <select id="getTrampRtuAddr" resultType="java.lang.String">-->
<!--    SELECT rtuAddr FROM pr_controller_tramp WHERE id = ${controllerId}-->
<!--  </select>-->
  <!--根据控制器编号获取流浪控制器信息-->
  <select id="getTrampControllerInfo" resultMap="BaseResultMap">
    SELECT rtuAddr, protocol, findDt FROM pr_controller_tramp WHERE id = ${controllerId}
  </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrIntakeMapper.xml
@@ -309,4 +309,13 @@
    where region.id = #{regionId,jdbcType=BIGINT}
  </select>
  <!--获取未绑控制器的取水口列表-->
  <select id="getNoBindingIntakes" resultType="java.util.HashMap">
    SELECT
        CAST(inta.id AS char)AS intakeId,
        name AS intakeName
    FROM pr_intake inta
    WHERE id NOT IN(SELECT intakeId FROM pr_controller) AND deleted = 0
  </select>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateHistoryMapper.xml
New file
@@ -0,0 +1,186 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmAlarmStateHistoryMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
    <!--@mbg.generated-->
    <!--@Table rm_alarm_state_history-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
    <result column="dt" jdbcType="DATE" property="dt" />
    <result column="bateryVolt" jdbcType="TINYINT" property="bateryvolt" />
    <result column="loss" jdbcType="TINYINT" property="loss" />
    <result column="meter" jdbcType="TINYINT" property="meter" />
    <result column="valve" jdbcType="TINYINT" property="valve" />
    <result column="icCard" jdbcType="TINYINT" property="iccard" />
    <result column="working" jdbcType="TINYINT" property="working" />
    <result column="valveState" jdbcType="TINYINT" property="valvestate" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controllerId, intakeId, rtuAddr, dt, bateryVolt, loss, meter, valve, icCard,
    working, valveState
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_alarm_state_history
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_alarm_state_history
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
    <!--@mbg.generated-->
    insert into rm_alarm_state_history (id, controllerId, intakeId,
      rtuAddr, dt, bateryVolt,
      loss, meter, valve,
      icCard, working, valveState
      )
    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT},
      #{rtuaddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{bateryvolt,jdbcType=TINYINT},
      #{loss,jdbcType=TINYINT}, #{meter,jdbcType=TINYINT}, #{valve,jdbcType=TINYINT},
      #{iccard,jdbcType=TINYINT}, #{working,jdbcType=TINYINT}, #{valvestate,jdbcType=TINYINT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
    <!--@mbg.generated-->
    insert into rm_alarm_state_history
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="controllerid != null">
        controllerId,
      </if>
      <if test="intakeid != null">
        intakeId,
      </if>
      <if test="rtuaddr != null">
        rtuAddr,
      </if>
      <if test="dt != null">
        dt,
      </if>
      <if test="bateryvolt != null">
        bateryVolt,
      </if>
      <if test="loss != null">
        loss,
      </if>
      <if test="meter != null">
        meter,
      </if>
      <if test="valve != null">
        valve,
      </if>
      <if test="iccard != null">
        icCard,
      </if>
      <if test="working != null">
        working,
      </if>
      <if test="valvestate != null">
        valveState,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="controllerid != null">
        #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        #{dt,jdbcType=DATE},
      </if>
      <if test="bateryvolt != null">
        #{bateryvolt,jdbcType=TINYINT},
      </if>
      <if test="loss != null">
        #{loss,jdbcType=TINYINT},
      </if>
      <if test="meter != null">
        #{meter,jdbcType=TINYINT},
      </if>
      <if test="valve != null">
        #{valve,jdbcType=TINYINT},
      </if>
      <if test="iccard != null">
        #{iccard,jdbcType=TINYINT},
      </if>
      <if test="working != null">
        #{working,jdbcType=TINYINT},
      </if>
      <if test="valvestate != null">
        #{valvestate,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
    <!--@mbg.generated-->
    update rm_alarm_state_history
    <set>
      <if test="controllerid != null">
        controllerId = #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        intakeId = #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        dt = #{dt,jdbcType=DATE},
      </if>
      <if test="bateryvolt != null">
        bateryVolt = #{bateryvolt,jdbcType=TINYINT},
      </if>
      <if test="loss != null">
        loss = #{loss,jdbcType=TINYINT},
      </if>
      <if test="meter != null">
        meter = #{meter,jdbcType=TINYINT},
      </if>
      <if test="valve != null">
        valve = #{valve,jdbcType=TINYINT},
      </if>
      <if test="iccard != null">
        icCard = #{iccard,jdbcType=TINYINT},
      </if>
      <if test="working != null">
        working = #{working,jdbcType=TINYINT},
      </if>
      <if test="valvestate != null">
        valveState = #{valvestate,jdbcType=TINYINT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory">
    <!--@mbg.generated-->
    update rm_alarm_state_history
    set controllerId = #{controllerid,jdbcType=BIGINT},
      intakeId = #{intakeid,jdbcType=BIGINT},
      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      dt = #{dt,jdbcType=DATE},
      bateryVolt = #{bateryvolt,jdbcType=TINYINT},
      loss = #{loss,jdbcType=TINYINT},
      meter = #{meter,jdbcType=TINYINT},
      valve = #{valve,jdbcType=TINYINT},
      icCard = #{iccard,jdbcType=TINYINT},
      working = #{working,jdbcType=TINYINT},
      valveState = #{valvestate,jdbcType=TINYINT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAlarmStateLastMapper.xml
New file
@@ -0,0 +1,195 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmAlarmStateLastMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
    <!--@mbg.generated-->
    <!--@Table rm_alarm_state_last-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
    <result column="dt" jdbcType="DATE" property="dt" />
    <result column="bateryVolt" jdbcType="TINYINT" property="bateryvolt" />
    <result column="loss" jdbcType="TINYINT" property="loss" />
    <result column="meter" jdbcType="TINYINT" property="meter" />
    <result column="valve" jdbcType="TINYINT" property="valve" />
    <result column="icCard" jdbcType="TINYINT" property="iccard" />
    <result column="working" jdbcType="TINYINT" property="working" />
    <result column="valveState" jdbcType="TINYINT" property="valvestate" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controllerId, intakeId, rtuAddr, dt, bateryVolt, loss, meter, valve, icCard,
    working, valveState
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_alarm_state_last
    where id = #{id,jdbcType=BIGINT}
  </select>
 <select id="selectByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_alarm_state_last
    where rtuAddr = #{rtuAddr,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_alarm_state_last
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
    <!--@mbg.generated-->
    insert into rm_alarm_state_last (id, controllerId, intakeId,
      rtuAddr, dt, bateryVolt,
      loss, meter, valve,
      icCard, working, valveState
      )
    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT},
      #{rtuaddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{bateryvolt,jdbcType=TINYINT},
      #{loss,jdbcType=TINYINT}, #{meter,jdbcType=TINYINT}, #{valve,jdbcType=TINYINT},
      #{iccard,jdbcType=TINYINT}, #{working,jdbcType=TINYINT}, #{valvestate,jdbcType=TINYINT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
    <!--@mbg.generated-->
    insert into rm_alarm_state_last
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="controllerid != null">
        controllerId,
      </if>
      <if test="intakeid != null">
        intakeId,
      </if>
      <if test="rtuaddr != null">
        rtuAddr,
      </if>
      <if test="dt != null">
        dt,
      </if>
      <if test="bateryvolt != null">
        bateryVolt,
      </if>
      <if test="loss != null">
        loss,
      </if>
      <if test="meter != null">
        meter,
      </if>
      <if test="valve != null">
        valve,
      </if>
      <if test="iccard != null">
        icCard,
      </if>
      <if test="working != null">
        working,
      </if>
      <if test="valvestate != null">
        valveState,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="controllerid != null">
        #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        #{dt,jdbcType=DATE},
      </if>
      <if test="bateryvolt != null">
        #{bateryvolt,jdbcType=TINYINT},
      </if>
      <if test="loss != null">
        #{loss,jdbcType=TINYINT},
      </if>
      <if test="meter != null">
        #{meter,jdbcType=TINYINT},
      </if>
      <if test="valve != null">
        #{valve,jdbcType=TINYINT},
      </if>
      <if test="iccard != null">
        #{iccard,jdbcType=TINYINT},
      </if>
      <if test="working != null">
        #{working,jdbcType=TINYINT},
      </if>
      <if test="valvestate != null">
        #{valvestate,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
    <!--@mbg.generated-->
    update rm_alarm_state_last
    <set>
      <if test="controllerid != null">
        controllerId = #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        intakeId = #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        dt = #{dt,jdbcType=DATE},
      </if>
      <if test="bateryvolt != null">
        bateryVolt = #{bateryvolt,jdbcType=TINYINT},
      </if>
      <if test="loss != null">
        loss = #{loss,jdbcType=TINYINT},
      </if>
      <if test="meter != null">
        meter = #{meter,jdbcType=TINYINT},
      </if>
      <if test="valve != null">
        valve = #{valve,jdbcType=TINYINT},
      </if>
      <if test="iccard != null">
        icCard = #{iccard,jdbcType=TINYINT},
      </if>
      <if test="working != null">
        working = #{working,jdbcType=TINYINT},
      </if>
      <if test="valvestate != null">
        valveState = #{valvestate,jdbcType=TINYINT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast">
    <!--@mbg.generated-->
    update rm_alarm_state_last
    set controllerId = #{controllerid,jdbcType=BIGINT},
      intakeId = #{intakeid,jdbcType=BIGINT},
      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      dt = #{dt,jdbcType=DATE},
      bateryVolt = #{bateryvolt,jdbcType=TINYINT},
      loss = #{loss,jdbcType=TINYINT},
      meter = #{meter,jdbcType=TINYINT},
      valve = #{valve,jdbcType=TINYINT},
      icCard = #{iccard,jdbcType=TINYINT},
      working = #{working,jdbcType=TINYINT},
      valveState = #{valvestate,jdbcType=TINYINT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportHistoryMapper.xml
New file
@@ -0,0 +1,197 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmAutoReportHistoryMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
    <!--@mbg.generated-->
    <!--@Table rm_auto_report_history-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
    <result column="dt" jdbcType="DATE" property="dt" />
    <result column="rtuDt" jdbcType="DATE" property="rtudt" />
    <result column="instantAmount" jdbcType="DOUBLE" property="instantamount" />
    <result column="totalAmount" jdbcType="DOUBLE" property="totalamount" />
    <result column="lossAmount" jdbcType="DOUBLE" property="lossamount" />
    <result column="waterPress" jdbcType="DOUBLE" property="waterpress" />
    <result column="batteryVolt" jdbcType="DOUBLE" property="batteryvolt" />
    <result column="sunVolt" jdbcType="DOUBLE" property="sunvolt" />
    <result column="signalValue" jdbcType="INTEGER" property="signalvalue" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controllerId, intakeId, rtuAddr, dt, rtuDt, instantAmount, totalAmount, lossAmount,
    waterPress, batteryVolt, sunVolt, signalValue
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_auto_report_history
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_auto_report_history
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
    <!--@mbg.generated-->
    insert into rm_auto_report_history (id, controllerId, intakeId,
      rtuAddr, dt, rtuDt, instantAmount,
      totalAmount, lossAmount, waterPress,
      batteryVolt, sunVolt, signalValue
      )
    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT},
      #{rtuaddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{rtudt,jdbcType=DATE}, #{instantamount,jdbcType=DOUBLE},
      #{totalamount,jdbcType=DOUBLE}, #{lossamount,jdbcType=DOUBLE}, #{waterpress,jdbcType=DOUBLE},
      #{batteryvolt,jdbcType=DOUBLE}, #{sunvolt,jdbcType=DOUBLE}, #{signalvalue,jdbcType=INTEGER}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
    <!--@mbg.generated-->
    insert into rm_auto_report_history
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="controllerid != null">
        controllerId,
      </if>
      <if test="intakeid != null">
        intakeId,
      </if>
      <if test="rtuaddr != null">
        rtuAddr,
      </if>
      <if test="dt != null">
        dt,
      </if>
      <if test="rtudt != null">
        rtuDt,
      </if>
      <if test="instantamount != null">
        instantAmount,
      </if>
      <if test="totalamount != null">
        totalAmount,
      </if>
      <if test="lossamount != null">
        lossAmount,
      </if>
      <if test="waterpress != null">
        waterPress,
      </if>
      <if test="batteryvolt != null">
        batteryVolt,
      </if>
      <if test="sunvolt != null">
        sunVolt,
      </if>
      <if test="signalvalue != null">
        signalValue,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="controllerid != null">
        #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        #{dt,jdbcType=DATE},
      </if>
      <if test="rtudt != null">
        #{rtudt,jdbcType=DATE},
      </if>
      <if test="instantamount != null">
        #{instantamount,jdbcType=DOUBLE},
      </if>
      <if test="totalamount != null">
        #{totalamount,jdbcType=DOUBLE},
      </if>
      <if test="lossamount != null">
        #{lossamount,jdbcType=DOUBLE},
      </if>
      <if test="waterpress != null">
        #{waterpress,jdbcType=DOUBLE},
      </if>
      <if test="batteryvolt != null">
        #{batteryvolt,jdbcType=DOUBLE},
      </if>
      <if test="sunvolt != null">
        #{sunvolt,jdbcType=DOUBLE},
      </if>
      <if test="signalvalue != null">
        #{signalvalue,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
    <!--@mbg.generated-->
    update rm_auto_report_history
    <set>
      <if test="controllerid != null">
        controllerId = #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        intakeId = #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        dt = #{dt,jdbcType=DATE},
      </if>
      <if test="rtudt != null">
        rtuDt = #{rtudt,jdbcType=DATE},
      </if>
      <if test="instantamount != null">
        instantAmount = #{instantamount,jdbcType=DOUBLE},
      </if>
      <if test="totalamount != null">
        totalAmount = #{totalamount,jdbcType=DOUBLE},
      </if>
      <if test="lossamount != null">
        lossAmount = #{lossamount,jdbcType=DOUBLE},
      </if>
      <if test="waterpress != null">
        waterPress = #{waterpress,jdbcType=DOUBLE},
      </if>
      <if test="batteryvolt != null">
        batteryVolt = #{batteryvolt,jdbcType=DOUBLE},
      </if>
      <if test="sunvolt != null">
        sunVolt = #{sunvolt,jdbcType=DOUBLE},
      </if>
      <if test="signalvalue != null">
        signalValue = #{signalvalue,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory">
    <!--@mbg.generated-->
    update rm_auto_report_history
    set controllerId = #{controllerid,jdbcType=BIGINT},
      intakeId = #{intakeid,jdbcType=BIGINT},
      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      dt = #{dt,jdbcType=DATE},
      rtuDt = #{rtudt,jdbcType=DATE},
      instantAmount = #{instantamount,jdbcType=DOUBLE},
      totalAmount = #{totalamount,jdbcType=DOUBLE},
      lossAmount = #{lossamount,jdbcType=DOUBLE},
      waterPress = #{waterpress,jdbcType=DOUBLE},
      batteryVolt = #{batteryvolt,jdbcType=DOUBLE},
      sunVolt = #{sunvolt,jdbcType=DOUBLE},
      signalValue = #{signalvalue,jdbcType=INTEGER}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmAutoReportLastMapper.xml
New file
@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmAutoReportLastMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
    <!--@mbg.generated-->
    <!--@Table rm_auto_report_last-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
    <result column="dt" jdbcType="DATE" property="dt" />
    <result column="rtuDt" jdbcType="DATE" property="rtudt" />
    <result column="instantAmount" jdbcType="DOUBLE" property="instantamount" />
    <result column="totalAmount" jdbcType="DOUBLE" property="totalamount" />
    <result column="lossAmount" jdbcType="DOUBLE" property="lossamount" />
    <result column="waterPress" jdbcType="DOUBLE" property="waterpress" />
    <result column="batteryVolt" jdbcType="DOUBLE" property="batteryvolt" />
    <result column="sunVolt" jdbcType="DOUBLE" property="sunvolt" />
    <result column="signalValue" jdbcType="INTEGER" property="signalvalue" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controllerId, intakeId, rtuAddr, dt, rtuDt, instantAmount, totalAmount, lossAmount,
    waterPress, batteryVolt, sunVolt, signalValue
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_auto_report_last
    where id = #{id,jdbcType=BIGINT}
  </select>
  <select id="selectByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_auto_report_last
    where rtuAddr = #{rtuAddr,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_auto_report_last
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
    <!--@mbg.generated-->
    insert into rm_auto_report_last (id, controllerId, intakeId,
      rtuAddr, dt, rtuDt, instantAmount,
      totalAmount, lossAmount, waterPress,
      batteryVolt, sunVolt, signalValue
      )
    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT},
      #{rtuaddr,jdbcType=VARCHAR}, #{dt,jdbcType=DATE}, #{rtudt,jdbcType=DATE}, #{instantamount,jdbcType=DOUBLE},
      #{totalamount,jdbcType=DOUBLE}, #{lossamount,jdbcType=DOUBLE}, #{waterpress,jdbcType=DOUBLE},
      #{batteryvolt,jdbcType=DOUBLE}, #{sunvolt,jdbcType=DOUBLE}, #{signalvalue,jdbcType=INTEGER}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
    <!--@mbg.generated-->
    insert into rm_auto_report_last
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="controllerid != null">
        controllerId,
      </if>
      <if test="intakeid != null">
        intakeId,
      </if>
      <if test="rtuaddr != null">
        rtuAddr,
      </if>
      <if test="dt != null">
        dt,
      </if>
      <if test="rtudt != null">
        rtuDt,
      </if>
      <if test="instantamount != null">
        instantAmount,
      </if>
      <if test="totalamount != null">
        totalAmount,
      </if>
      <if test="lossamount != null">
        lossAmount,
      </if>
      <if test="waterpress != null">
        waterPress,
      </if>
      <if test="batteryvolt != null">
        batteryVolt,
      </if>
      <if test="sunvolt != null">
        sunVolt,
      </if>
      <if test="signalvalue != null">
        signalValue,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="controllerid != null">
        #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        #{dt,jdbcType=DATE},
      </if>
      <if test="rtudt != null">
        #{rtudt,jdbcType=DATE},
      </if>
      <if test="instantamount != null">
        #{instantamount,jdbcType=DOUBLE},
      </if>
      <if test="totalamount != null">
        #{totalamount,jdbcType=DOUBLE},
      </if>
      <if test="lossamount != null">
        #{lossamount,jdbcType=DOUBLE},
      </if>
      <if test="waterpress != null">
        #{waterpress,jdbcType=DOUBLE},
      </if>
      <if test="batteryvolt != null">
        #{batteryvolt,jdbcType=DOUBLE},
      </if>
      <if test="sunvolt != null">
        #{sunvolt,jdbcType=DOUBLE},
      </if>
      <if test="signalvalue != null">
        #{signalvalue,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
    <!--@mbg.generated-->
    update rm_auto_report_last
    <set>
      <if test="controllerid != null">
        controllerId = #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        intakeId = #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="dt != null">
        dt = #{dt,jdbcType=DATE},
      </if>
      <if test="rtudt != null">
        rtuDt = #{rtudt,jdbcType=DATE},
      </if>
      <if test="instantamount != null">
        instantAmount = #{instantamount,jdbcType=DOUBLE},
      </if>
      <if test="totalamount != null">
        totalAmount = #{totalamount,jdbcType=DOUBLE},
      </if>
      <if test="lossamount != null">
        lossAmount = #{lossamount,jdbcType=DOUBLE},
      </if>
      <if test="waterpress != null">
        waterPress = #{waterpress,jdbcType=DOUBLE},
      </if>
      <if test="batteryvolt != null">
        batteryVolt = #{batteryvolt,jdbcType=DOUBLE},
      </if>
      <if test="sunvolt != null">
        sunVolt = #{sunvolt,jdbcType=DOUBLE},
      </if>
      <if test="signalvalue != null">
        signalValue = #{signalvalue,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast">
    <!--@mbg.generated-->
    update rm_auto_report_last
    set controllerId = #{controllerid,jdbcType=BIGINT},
      intakeId = #{intakeid,jdbcType=BIGINT},
      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      dt = #{dt,jdbcType=DATE},
      rtuDt = #{rtudt,jdbcType=DATE},
      instantAmount = #{instantamount,jdbcType=DOUBLE},
      totalAmount = #{totalamount,jdbcType=DOUBLE},
      lossAmount = #{lossamount,jdbcType=DOUBLE},
      waterPress = #{waterpress,jdbcType=DOUBLE},
      batteryVolt = #{batteryvolt,jdbcType=DOUBLE},
      sunVolt = #{sunvolt,jdbcType=DOUBLE},
      signalValue = #{signalvalue,jdbcType=INTEGER}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountMapper.xml
New file
@@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmIntakeAmountMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
    <!--@mbg.generated-->
    <!--@Table rm_intake_amount-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
    <result column="amount" jdbcType="DOUBLE" property="amount" />
    <result column="loss" jdbcType="DOUBLE" property="loss" />
    <result column="controllerIdLast" jdbcType="BIGINT" property="controlleridlast" />
    <result column="dtLast" jdbcType="DATE" property="dtlast" />
    <result column="amountLast" jdbcType="DOUBLE" property="amountlast" />
    <result column="totalAmountLast" jdbcType="DOUBLE" property="totalamountlast" />
    <result column="resourceTypeLast" jdbcType="TINYINT" property="resourcetypelast" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, intakeId, amount, loss, controllerIdLast, dtLast, amountLast, totalAmountLast,
    resourceTypeLast
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_intake_amount
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_intake_amount
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
    <!--@mbg.generated-->
    insert into rm_intake_amount (id, intakeId, amount,
      loss, controllerIdLast, dtLast,
      amountLast, totalAmountLast, resourceTypeLast
      )
    values (#{id,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT}, #{amount,jdbcType=DOUBLE},
      #{loss,jdbcType=DOUBLE}, #{controlleridlast,jdbcType=BIGINT}, #{dtlast,jdbcType=DATE},
      #{amountlast,jdbcType=DOUBLE}, #{totalamountlast,jdbcType=DOUBLE}, #{resourcetypelast,jdbcType=TINYINT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
    <!--@mbg.generated-->
    insert into rm_intake_amount
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="intakeid != null">
        intakeId,
      </if>
      <if test="amount != null">
        amount,
      </if>
      <if test="loss != null">
        loss,
      </if>
      <if test="controlleridlast != null">
        controllerIdLast,
      </if>
      <if test="dtlast != null">
        dtLast,
      </if>
      <if test="amountlast != null">
        amountLast,
      </if>
      <if test="totalamountlast != null">
        totalAmountLast,
      </if>
      <if test="resourcetypelast != null">
        resourceTypeLast,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="amount != null">
        #{amount,jdbcType=DOUBLE},
      </if>
      <if test="loss != null">
        #{loss,jdbcType=DOUBLE},
      </if>
      <if test="controlleridlast != null">
        #{controlleridlast,jdbcType=BIGINT},
      </if>
      <if test="dtlast != null">
        #{dtlast,jdbcType=DATE},
      </if>
      <if test="amountlast != null">
        #{amountlast,jdbcType=DOUBLE},
      </if>
      <if test="totalamountlast != null">
        #{totalamountlast,jdbcType=DOUBLE},
      </if>
      <if test="resourcetypelast != null">
        #{resourcetypelast,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
    <!--@mbg.generated-->
    update rm_intake_amount
    <set>
      <if test="intakeid != null">
        intakeId = #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="amount != null">
        amount = #{amount,jdbcType=DOUBLE},
      </if>
      <if test="loss != null">
        loss = #{loss,jdbcType=DOUBLE},
      </if>
      <if test="controlleridlast != null">
        controllerIdLast = #{controlleridlast,jdbcType=BIGINT},
      </if>
      <if test="dtlast != null">
        dtLast = #{dtlast,jdbcType=DATE},
      </if>
      <if test="amountlast != null">
        amountLast = #{amountlast,jdbcType=DOUBLE},
      </if>
      <if test="totalamountlast != null">
        totalAmountLast = #{totalamountlast,jdbcType=DOUBLE},
      </if>
      <if test="resourcetypelast != null">
        resourceTypeLast = #{resourcetypelast,jdbcType=TINYINT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
    <!--@mbg.generated-->
    update rm_intake_amount
    set intakeId = #{intakeid,jdbcType=BIGINT},
      amount = #{amount,jdbcType=DOUBLE},
      loss = #{loss,jdbcType=DOUBLE},
      controllerIdLast = #{controlleridlast,jdbcType=BIGINT},
      dtLast = #{dtlast,jdbcType=DATE},
      amountLast = #{amountlast,jdbcType=DOUBLE},
      totalAmountLast = #{totalamountlast,jdbcType=DOUBLE},
      resourceTypeLast = #{resourcetypelast,jdbcType=TINYINT}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveReportMapper.xml
New file
@@ -0,0 +1,303 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveReportMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
    <!--@mbg.generated-->
    <!--@Table rm_open_close_valve_report-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="controllerId" jdbcType="BIGINT" property="controllerid" />
    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuaddr" />
    <result column="opDt" jdbcType="DATE" property="opdt" />
    <result column="opType" jdbcType="TINYINT" property="optype" />
    <result column="opTotalAmount" jdbcType="DOUBLE" property="optotalamount" />
    <result column="opIcCardNo" jdbcType="VARCHAR" property="opiccardno" />
    <result column="opIcCardAddr" jdbcType="VARCHAR" property="opiccardaddr" />
    <result column="opRemainMoney" jdbcType="DOUBLE" property="opremainmoney" />
    <result column="openDt" jdbcType="DATE" property="opendt" />
    <result column="clDt" jdbcType="DATE" property="cldt" />
    <result column="clType" jdbcType="TINYINT" property="cltype" />
    <result column="clTotalAmount" jdbcType="DOUBLE" property="cltotalamount" />
    <result column="clIcCardNo" jdbcType="VARCHAR" property="cliccardno" />
    <result column="clIcCardAddr" jdbcType="VARCHAR" property="cliccardaddr" />
    <result column="clRemainMoney" jdbcType="DOUBLE" property="clremainmoney" />
    <result column="clThisAmount" jdbcType="DOUBLE" property="clthisamount" />
    <result column="clThisMoney" jdbcType="DOUBLE" property="clthismoney" />
    <result column="clThisTime" jdbcType="INTEGER" property="clthistime" />
    <result column="clOpenDt" jdbcType="DATE" property="clopendt" />
    <result column="closeDt" jdbcType="DATE" property="closedt" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controllerId, intakeId, rtuAddr, opDt, opType, opTotalAmount, opIcCardNo, opIcCardAddr,
    opRemainMoney, openDt, clDt, clType, clTotalAmount, clIcCardNo, clIcCardAddr, clRemainMoney,
    clThisAmount, clThisMoney, clThisTime, clOpenDt, closeDt
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_open_close_valve_report
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_open_close_valve_report
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_report (id, controllerId, intakeId,
      rtuAddr, opDt, opType,
      opTotalAmount, opIcCardNo, opIcCardAddr,
      opRemainMoney, openDt, clDt,
      clType, clTotalAmount, clIcCardNo,
      clIcCardAddr, clRemainMoney, clThisAmount,
      clThisMoney, clThisTime, clOpenDt,
      closeDt)
    values (#{id,jdbcType=BIGINT}, #{controllerid,jdbcType=BIGINT}, #{intakeid,jdbcType=BIGINT},
      #{rtuaddr,jdbcType=VARCHAR}, #{opdt,jdbcType=DATE}, #{optype,jdbcType=TINYINT},
      #{optotalamount,jdbcType=DOUBLE}, #{opiccardno,jdbcType=VARCHAR}, #{opiccardaddr,jdbcType=VARCHAR},
      #{opremainmoney,jdbcType=DOUBLE}, #{opendt,jdbcType=DATE}, #{cldt,jdbcType=DATE},
      #{cltype,jdbcType=TINYINT}, #{cltotalamount,jdbcType=DOUBLE}, #{cliccardno,jdbcType=VARCHAR},
      #{cliccardaddr,jdbcType=VARCHAR}, #{clremainmoney,jdbcType=DOUBLE}, #{clthisamount,jdbcType=DOUBLE},
      #{clthismoney,jdbcType=DOUBLE}, #{clthistime,jdbcType=INTEGER}, #{clopendt,jdbcType=DATE},
      #{closedt,jdbcType=DATE})
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_report
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="controllerid != null">
        controllerId,
      </if>
      <if test="intakeid != null">
        intakeId,
      </if>
      <if test="rtuaddr != null">
        rtuAddr,
      </if>
      <if test="opdt != null">
        opDt,
      </if>
      <if test="optype != null">
        opType,
      </if>
      <if test="optotalamount != null">
        opTotalAmount,
      </if>
      <if test="opiccardno != null">
        opIcCardNo,
      </if>
      <if test="opiccardaddr != null">
        opIcCardAddr,
      </if>
      <if test="opremainmoney != null">
        opRemainMoney,
      </if>
      <if test="opendt != null">
        openDt,
      </if>
      <if test="cldt != null">
        clDt,
      </if>
      <if test="cltype != null">
        clType,
      </if>
      <if test="cltotalamount != null">
        clTotalAmount,
      </if>
      <if test="cliccardno != null">
        clIcCardNo,
      </if>
      <if test="cliccardaddr != null">
        clIcCardAddr,
      </if>
      <if test="clremainmoney != null">
        clRemainMoney,
      </if>
      <if test="clthisamount != null">
        clThisAmount,
      </if>
      <if test="clthismoney != null">
        clThisMoney,
      </if>
      <if test="clthistime != null">
        clThisTime,
      </if>
      <if test="clopendt != null">
        clOpenDt,
      </if>
      <if test="closedt != null">
        closeDt,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="controllerid != null">
        #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="opdt != null">
        #{opdt,jdbcType=DATE},
      </if>
      <if test="optype != null">
        #{optype,jdbcType=TINYINT},
      </if>
      <if test="optotalamount != null">
        #{optotalamount,jdbcType=DOUBLE},
      </if>
      <if test="opiccardno != null">
        #{opiccardno,jdbcType=VARCHAR},
      </if>
      <if test="opiccardaddr != null">
        #{opiccardaddr,jdbcType=VARCHAR},
      </if>
      <if test="opremainmoney != null">
        #{opremainmoney,jdbcType=DOUBLE},
      </if>
      <if test="opendt != null">
        #{opendt,jdbcType=DATE},
      </if>
      <if test="cldt != null">
        #{cldt,jdbcType=DATE},
      </if>
      <if test="cltype != null">
        #{cltype,jdbcType=TINYINT},
      </if>
      <if test="cltotalamount != null">
        #{cltotalamount,jdbcType=DOUBLE},
      </if>
      <if test="cliccardno != null">
        #{cliccardno,jdbcType=VARCHAR},
      </if>
      <if test="cliccardaddr != null">
        #{cliccardaddr,jdbcType=VARCHAR},
      </if>
      <if test="clremainmoney != null">
        #{clremainmoney,jdbcType=DOUBLE},
      </if>
      <if test="clthisamount != null">
        #{clthisamount,jdbcType=DOUBLE},
      </if>
      <if test="clthismoney != null">
        #{clthismoney,jdbcType=DOUBLE},
      </if>
      <if test="clthistime != null">
        #{clthistime,jdbcType=INTEGER},
      </if>
      <if test="clopendt != null">
        #{clopendt,jdbcType=DATE},
      </if>
      <if test="closedt != null">
        #{closedt,jdbcType=DATE},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
    <!--@mbg.generated-->
    update rm_open_close_valve_report
    <set>
      <if test="controllerid != null">
        controllerId = #{controllerid,jdbcType=BIGINT},
      </if>
      <if test="intakeid != null">
        intakeId = #{intakeid,jdbcType=BIGINT},
      </if>
      <if test="rtuaddr != null">
        rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      </if>
      <if test="opdt != null">
        opDt = #{opdt,jdbcType=DATE},
      </if>
      <if test="optype != null">
        opType = #{optype,jdbcType=TINYINT},
      </if>
      <if test="optotalamount != null">
        opTotalAmount = #{optotalamount,jdbcType=DOUBLE},
      </if>
      <if test="opiccardno != null">
        opIcCardNo = #{opiccardno,jdbcType=VARCHAR},
      </if>
      <if test="opiccardaddr != null">
        opIcCardAddr = #{opiccardaddr,jdbcType=VARCHAR},
      </if>
      <if test="opremainmoney != null">
        opRemainMoney = #{opremainmoney,jdbcType=DOUBLE},
      </if>
      <if test="opendt != null">
        openDt = #{opendt,jdbcType=DATE},
      </if>
      <if test="cldt != null">
        clDt = #{cldt,jdbcType=DATE},
      </if>
      <if test="cltype != null">
        clType = #{cltype,jdbcType=TINYINT},
      </if>
      <if test="cltotalamount != null">
        clTotalAmount = #{cltotalamount,jdbcType=DOUBLE},
      </if>
      <if test="cliccardno != null">
        clIcCardNo = #{cliccardno,jdbcType=VARCHAR},
      </if>
      <if test="cliccardaddr != null">
        clIcCardAddr = #{cliccardaddr,jdbcType=VARCHAR},
      </if>
      <if test="clremainmoney != null">
        clRemainMoney = #{clremainmoney,jdbcType=DOUBLE},
      </if>
      <if test="clthisamount != null">
        clThisAmount = #{clthisamount,jdbcType=DOUBLE},
      </if>
      <if test="clthismoney != null">
        clThisMoney = #{clthismoney,jdbcType=DOUBLE},
      </if>
      <if test="clthistime != null">
        clThisTime = #{clthistime,jdbcType=INTEGER},
      </if>
      <if test="clopendt != null">
        clOpenDt = #{clopendt,jdbcType=DATE},
      </if>
      <if test="closedt != null">
        closeDt = #{closedt,jdbcType=DATE},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveReport">
    <!--@mbg.generated-->
    update rm_open_close_valve_report
    set controllerId = #{controllerid,jdbcType=BIGINT},
      intakeId = #{intakeid,jdbcType=BIGINT},
      rtuAddr = #{rtuaddr,jdbcType=VARCHAR},
      opDt = #{opdt,jdbcType=DATE},
      opType = #{optype,jdbcType=TINYINT},
      opTotalAmount = #{optotalamount,jdbcType=DOUBLE},
      opIcCardNo = #{opiccardno,jdbcType=VARCHAR},
      opIcCardAddr = #{opiccardaddr,jdbcType=VARCHAR},
      opRemainMoney = #{opremainmoney,jdbcType=DOUBLE},
      openDt = #{opendt,jdbcType=DATE},
      clDt = #{cldt,jdbcType=DATE},
      clType = #{cltype,jdbcType=TINYINT},
      clTotalAmount = #{cltotalamount,jdbcType=DOUBLE},
      clIcCardNo = #{cliccardno,jdbcType=VARCHAR},
      clIcCardAddr = #{cliccardaddr,jdbcType=VARCHAR},
      clRemainMoney = #{clremainmoney,jdbcType=DOUBLE},
      clThisAmount = #{clthisamount,jdbcType=DOUBLE},
      clThisMoney = #{clthismoney,jdbcType=DOUBLE},
      clThisTime = #{clthistime,jdbcType=INTEGER},
      clOpenDt = #{clopendt,jdbcType=DATE},
      closeDt = #{closedt,jdbcType=DATE}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/Task.java
@@ -1,5 +1,7 @@
package com.dy.aceMw.server.rtuData;
import java.text.ParseException;
public interface Task {
    
    
@@ -14,7 +16,7 @@
     * æ‰§è¡ŒèŠ‚ç‚¹ä»»åŠ¡
     * @param data éœ€è¦å¤„理的数据
     */
    public void execute(Object data) ;
    public void execute(Object data) throws ParseException;
    
    /**
     * å¾—到本任务节点处理产生的中间结果,以供本节点所在树枝的下级任务节点及本树枝的左侧(根在上)所有树枝的节点应用本结果
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskPool.java
@@ -26,23 +26,25 @@
     * å¤šçº¿ç¨‹çŽ¯å¢ƒä¸‹è¿è¡Œ
     * @return
     */
    public static synchronized TaskSurpport popTask(){
        TaskSurpport t = (tasks.size() > 0)?tasks.get(0):null ;
        if(t != null){
            tasks.remove(0) ;
        }else{
            try {
                t = newTaskTree() ;
            } catch (Exception e) {
                log.error(e.getMessage() == null?"实例化上行数据处理任务对象树失败!" : e.getMessage(), e);
            } finally {
                if(t == null){
                    log.error("实例化上行数据处理任务对象失败!" );
    public static TaskSurpport popTask(){
        synchronized(tasks){
            TaskSurpport t = (tasks.size() > 0)?tasks.get(0):null ;
            if(t != null){
                tasks.remove(0) ;
            }else{
                try {
                    t = newTaskTree() ;
                } catch (Exception e) {
                    log.error(e.getMessage() == null?"实例化上行数据处理任务对象树失败!" : e.getMessage(), e);
                } finally {
                    if(t == null){
                        log.error("实例化上行数据处理任务对象失败!" );
                    }
                }
            }
            return t ;
        }
        return t ;
    }
    
    /**
@@ -51,18 +53,20 @@
     * è¿™é‡Œéœ€è¦åŒæ­¥é”ï¼Œå› ä¸ºä¸Šé¢æ–¹æ³•中执行完tasks.get(0)且未执行tasks.remove(0)期间,本方法执行并且执行完,那么后期就会出乱子
     * @param t
     */
    public static synchronized void freeAndCleanTask(TaskSurpport t){
        if(t != null){
            boolean find = false ;
            for(TaskSurpport tin : tasks){
                if(tin == t){
                    find = true ;
                    break ;
    public static void freeAndCleanTask(TaskSurpport t){
        synchronized(tasks) {
            if (t != null) {
                boolean find = false;
                for (TaskSurpport tin : tasks) {
                    if (tin == t) {
                        find = true;
                        break;
                    }
                }
            }
            if(!find){
                t.cleanMeAndSubs();
                tasks.add(0, t) ;
                if (!find) {
                    t.cleanMeAndSubs();
                    tasks.add(0, t);
                }
            }
        }
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TaskSurpport.java
@@ -3,6 +3,8 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.text.ParseException;
/**
 * éƒ¨åˆ†å®žçްTask
 */
@@ -11,7 +13,7 @@
    private static final Logger log = LogManager.getLogger(TaskSurpport.class.getName()) ;
    
    //当前所处理的上行数据所属RTU的地址
    public String rtuAddr_inRootTk ;//只在根root任务对象上会付此值
    //public String rtuAddr_inRootTk ;//只在根root任务对象上会付此值
    //本节点配置
    protected TaskConfig conf ;
    //根任务
@@ -26,7 +28,7 @@
     * @param data éœ€è¦å¤„理的数据
     */
    @Override
    public abstract void execute(Object data) ;
    public abstract void execute(Object data) throws ParseException;
    
    /**
     * ä»»åŠ¡é‡‡ç”¨å¯¹è±¡æ± ï¼Œä»¥ä¾¿é‡ç”¨ä»»åŠ¡å¯¹è±¡ï¼Œ
@@ -35,7 +37,7 @@
     */
    @Override
    public void cleanMeAndSubs() {
        rtuAddr_inRootTk = null ;
        //rtuAddr_inRootTk = null ;
        taskResult = null ;
        if(this.subTasks != null && this.subTasks.length > 0){
            for(int i = 0 ; i < this.subTasks.length; i++){
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java
@@ -2,11 +2,22 @@
import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper;
import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
import com.dy.pipIrrGlobal.daoRm.RmAlarmStateHistoryMapper;
import com.dy.pipIrrGlobal.daoRm.RmAlarmStateLastMapper;
import com.dy.pipIrrGlobal.daoRm.RmAutoReportHistoryMapper;
import com.dy.pipIrrGlobal.daoRm.RmAutoReportLastMapper;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
import com.dy.pipIrrGlobal.pojoPr.PrIntake;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -22,18 +33,26 @@
    private PrControllerTrampMapper prControllerTrampMapperDao;//流浪控制器DAO
    @Autowired
    private PrControllerMapper prControllerMapperDao ;//控制器DAO
    @Autowired
    @Lazy
    private DbSv sv ;
    private RmAlarmStateLastMapper rmAlarmStateLastMapperDao ;//控制器最新报警和状态DAO
    @Autowired
    private RmAlarmStateHistoryMapper rmAlarmStateHistoryMapperDao ;//控制器历史报警和状态DAO
    @Autowired
    private RmAutoReportLastMapper rmAutoReportLastMapperDao ;//控制器最新上报数据DAO
    @Autowired
    private RmAutoReportHistoryMapper rmAutoReportHistoryMapperDao ;//控制器历史上报数据DAO
    //@Autowired
    //@Lazy
    //private DbSv sv ;
    /**
     * é€šè¿‡æŽ§åˆ¶å™¨åœ°å€ä»Žæ•°æ®åº“表中查询控制器
     * @param rtuAddr æŽ§åˆ¶å™¨åœ°å€
     * @return æŽ§åˆ¶å™¨
     */
    public PrController getPrControllerByRtuAddr(String rtuAddr){
        List<PrController> list = this.prControllerMapperDao.selectPrControllerByRtuAddr(rtuAddr) ;
    public PrController getControllersByRtuAddrAndIntakeNotNull(String rtuAddr){
        List<PrController> list = this.prControllerMapperDao.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
@@ -45,20 +64,75 @@
     * @return æµæµªæŽ§åˆ¶å™¨
     */
    public PrControllerTramp getPrControllerTrampByRtuAddr(String rtuAddr){
        List<PrControllerTramp> list = this.prControllerTrampMapperDao.selectPrControllerTrampByRtuAddr(rtuAddr) ;
        List<PrControllerTramp> list = this.prControllerTrampMapperDao.getPrControllerTrampByRtuAddr(rtuAddr) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
        return null ;
    }
    /**
     * ä¿å­˜æµæµªæŽ§åˆ¶å™¨
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void savePrConctrollerTramp(PrControllerTramp po){
        this.prControllerTrampMapperDao.insert(po) ;
    }
    /**
     * å¾—到控制器报警与状态最新记录
     * @param rtuAddr
     * @return
     */
    public RmAlarmStateLast getRmLastAlarmState(String rtuAddr){
        List<RmAlarmStateLast> list = rmAlarmStateLastMapperDao.selectByRtuAddr(rtuAddr) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
        return null ;
    }
    /**
     * ä¿å­˜æŽ§åˆ¶å™¨æŠ¥è­¦ä¸ŽçŠ¶æ€æœ€æ–°è®°å½•
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmAlarmStateLast(RmAlarmStateLast po){
        this.rmAlarmStateLastMapperDao.insert(po) ;
    }
    /**
     * ä¿å­˜æŽ§åˆ¶å™¨æŠ¥è­¦ä¸ŽçŠ¶æ€åŽ†å²è®°å½•
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmAlarmStateHistory(RmAlarmStateHistory po){
        this.rmAlarmStateHistoryMapperDao.insert(po) ;
    }
    /**
     * å¾—到控制器上报数据最新记录
     * @param rtuAddr
     * @return
     */
    public RmAutoReportLast getRmLastAutoReport(String rtuAddr){
        List<RmAutoReportLast> list = rmAutoReportLastMapperDao.selectByRtuAddr(rtuAddr) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
        return null ;
    }
    /**
     * ä¿å­˜æŽ§åˆ¶å™¨ä¸ŠæŠ¥æ•°æ®æœ€æ–°è®°å½•
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmAutoReportLast(RmAutoReportLast po){
        this.rmAutoReportLastMapperDao.insert(po) ;
    }
    /**
     * ä¿å­˜æŽ§åˆ¶å™¨ä¸ŠæŠ¥æ•°æ®åŽ†å²è®°å½•
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmAutoReportHistory(RmAutoReportHistory po){
        this.rmAutoReportHistoryMapperDao.insert(po) ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java
New file
@@ -0,0 +1,134 @@
package com.dy.aceMw.server.rtuData.p206V1_0_0;
import com.dy.aceMw.server.rtuData.TaskSurpport;
import com.dy.aceMw.server.rtuData.dbSv.DbSv;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V1_0_0.DataAlarmVo;
import com.dy.common.mw.protocol.p206V1_0_0.DataStateVo;
import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
import com.dy.common.util.DateTime;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/1/15 21:59
 * @LastEditTime 2024/1/15 21:59
 * @Description
 */
public class TkDealAlarmStatus extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealAlarmStatus.class.getName()) ;
    //ç±»ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealAlarmStatus" ;
    /**
     * æ‰§è¡ŒèŠ‚ç‚¹ä»»åŠ¡ï¼šæŠ¥è­¦åŠçŠ¶æ€
     * @param data éœ€è¦å¤„理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        Object subD = d.getSubData() ;
        if(subD != null){
            DataV1_0_1 dV1_0_1 = (DataV1_0_1)subD ;
            if(dV1_0_1 != null){
                //dV1_0_1.dataCd81Vo ä¸Ž dV1_0_1.dataCdC0Vo ä¸ä¼šåŒæ—¶æœ‰å€¼
                try{
                    if(dV1_0_1.dataCd81Vo != null){
                        if(dV1_0_1.dataCd81Vo.alarmVo != null || dV1_0_1.dataCd81Vo.stateVo != null){
                            Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
                            DbSv sv = (DbSv)objs[0] ;
                            PrController controller = (PrController)objs[1] ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ;
                        }
                    } else if(dV1_0_1.dataCdC0Vo != null){
                        if(dV1_0_1.dataCdC0Vo.alarmVo != null || dV1_0_1.dataCdC0Vo.stateVo != null){
                            Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
                            DbSv sv = (DbSv)objs[0] ;
                            PrController controller = (PrController)objs[1] ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ;
                        }
                    }
                }catch (Exception e){
                    log.error("保存控制器报警和状态数据时发生异常", e);
                }
            }
        }
    }
    /**
     * ä¿å­˜æŠ¥è­¦çŠ¶æ€æœ€æ–°æ•°æ®
     * @param sv æœåŠ¡
     * @param controller æŽ§åˆ¶å™¨å¯¹è±¡
     * @param rtuAddr æŽ§åˆ¶å™¨åœ°å€
     * @param alarmVo æŠ¥è­¦å¯¹è±¡
     * @param stateVo çŠ¶æ€å¯¹è±¡
     */
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception {
        RmAlarmStateLast po = sv.getRmLastAlarmState(rtuAddr) ;
        if(po == null){
            po = new RmAlarmStateLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                    rtuAddr,
                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                    alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve,
                    stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ;
            sv.saveRmAlarmStateLast(po) ;
        }else{
            po = this.update(controller, po, dV1_0_1, alarmVo, stateVo) ;
            sv.saveRmAlarmStateLast(po);
        }
    }
    /**
     * ä¿å­˜æŠ¥è­¦çŠ¶æ€åŽ†å²è®°å½•
     * @param sv æœåŠ¡
     * @param controller æŽ§åˆ¶å™¨å¯¹è±¡
     * @param rtuAddr æŽ§åˆ¶å™¨åœ°å€
     * @param alarmVo æŠ¥è­¦å¯¹è±¡
     * @param stateVo çŠ¶æ€å¯¹è±¡
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception {
        RmAlarmStateHistory po = new RmAlarmStateHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve,
                stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ;
        sv.saveRmAlarmStateHistory(po) ;
    }
    private RmAlarmStateLast update(PrController controller, RmAlarmStateLast po, DataV1_0_1 dV1_0_1, DataAlarmVo alarmVo, DataStateVo stateVo) throws Exception {
        po.controllerid = controller==null?null:controller.getId() ;
        po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ;
        if(alarmVo != null){
            po.bateryvolt = alarmVo.batteryVolt ;
            po.loss = alarmVo.loss ;
            po.meter = alarmVo.meter ;
            po.valve = alarmVo.valve ;
        }else{
            po.bateryvolt = null ;
            po.loss = null ;
            po.meter = null ;
            po.valve = null ;
        }
        if(stateVo != null){
           po.iccard = stateVo.icCard ;
           po.working = stateVo.working ;
           po.valvestate = stateVo.valve ;
        }else{
            po.iccard = null ;
            po.working = null ;
            po.valvestate = null ;
        }
        return po ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java
New file
@@ -0,0 +1,107 @@
package com.dy.aceMw.server.rtuData.p206V1_0_0;
import com.dy.aceMw.server.rtuData.TaskSurpport;
import com.dy.aceMw.server.rtuData.dbSv.DbSv;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V1_0_0.DataCdC0Vo;
import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
import com.dy.common.util.DateTime;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportHistory;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/1/16 14:11
 * @LastEditTime 2024/1/16 14:11
 * @Description
 */
public class TkDealAutoReport  extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealAlarmStatus.class.getName()) ;
    //ç±»ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealAlarmStatus" ;
    /**
     * æ‰§è¡ŒèŠ‚ç‚¹ä»»åŠ¡ï¼šæŽ§åˆ¶å™¨è‡ªæŠ¥æ•°æ®ï¼ˆåŠŸèƒ½ç ä¸ºC0)
     * @param data éœ€è¦å¤„理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data) data;
        Object subD = d.getSubData();
        if (subD != null) {
            DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD;
            if (dV1_0_1 != null && dV1_0_1.dataCdC0Vo != null) {
                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
                DbSv sv = (DbSv)objs[0] ;
                PrController controller = (PrController)objs[1] ;
                try{
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCdC0Vo) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(),dV1_0_1, dV1_0_1.dataCdC0Vo) ;
                }catch (Exception e){
                    log.error("保存控制器自报数据时发生异常", e);
                }
            }
        }
    }
    /**
     * ä¿å­˜è‡ªæŠ¥æœ€æ–°æ•°æ®
     * @param sv æœåŠ¡
     * @param controller æŽ§åˆ¶å™¨å¯¹è±¡
     * @param rtuAddr æŽ§åˆ¶å™¨åœ°å€
     * @param dataCdC0Vo è‡ªæŠ¥æ•°æ®å¯¹è±¡
     */
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
        RmAutoReportLast po = sv.getRmLastAutoReport(rtuAddr) ;
        if(po == null){
            po = new RmAutoReportLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getId(),
                    rtuAddr,
                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
                    dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
                    dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
            sv.saveRmAutoReportLast(po) ;
        }else{
            po = this.update(po, dV1_0_1, dataCdC0Vo) ;
            sv.saveRmAutoReportLast(po);
        }
    }
    /**
     * ä¿å­˜è‡ªæŠ¥åŽ†å²è®°å½•
     * @param sv æœåŠ¡
     * @param controller æŽ§åˆ¶å™¨å¯¹è±¡
     * @param rtuAddr æŽ§åˆ¶å™¨åœ°å€
     * @param dataCdC0Vo è‡ªæŠ¥æ•°æ®å¯¹è±¡
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
        RmAutoReportHistory po = new RmAutoReportHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt),
                dataCdC0Vo.instantAmount, dataCdC0Vo.totalAmount, dataCdC0Vo.lossAmount,
                dataCdC0Vo.waterPress, dataCdC0Vo.batteryVolt, dataCdC0Vo.sunVolt, dataCdC0Vo.signalValue) ;
        sv.saveRmAutoReportHistory(po) ;
    }
    private RmAutoReportLast update(RmAutoReportLast po, DataV1_0_1 dV1_0_1, DataCdC0Vo dataCdC0Vo) throws Exception {
        po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
        po.rtudt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ;
        po.instantamount = dataCdC0Vo.instantAmount;
        po.totalamount = dataCdC0Vo.totalAmount;
        po.lossamount = dataCdC0Vo.lossAmount;
        po.waterpress = dataCdC0Vo.waterPress;
        po.batteryvolt = dataCdC0Vo.batteryVolt;
        po.sunvolt = dataCdC0Vo.sunVolt;
        po.signalvalue = dataCdC0Vo.signalValue;
        return po ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java
New file
@@ -0,0 +1,36 @@
package com.dy.aceMw.server.rtuData.p206V1_0_0;
import com.dy.aceMw.server.rtuData.TaskSurpport;
import com.dy.aceMw.server.rtuData.dbSv.DbSv;
import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/1/16 17:18
 * @LastEditTime 2024/1/16 17:18
 * @Description
 */
/**
 * å¤„理控制器关阀上报
 */
public class TkDealCloseValveReport extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealCloseValveReport.class.getName()) ;
    //ç±»ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealCloseValveReport" ;
    /**
     * æ‰§è¡ŒèŠ‚ç‚¹ä»»åŠ¡: å¤„理控制器关阀上报
     * @param data éœ€è¦å¤„理的数据
     */
    @Override
    public void execute(Object data) {
        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
        DbSv sv = (DbSv)objs[0] ;
        PrControllerTramp rtuTramp = (PrControllerTramp)objs[2] ;
        sv.savePrConctrollerTramp(rtuTramp);
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
New file
@@ -0,0 +1,50 @@
package com.dy.aceMw.server.rtuData.p206V1_0_0;
import com.dy.aceMw.server.rtuData.TaskSurpport;
import com.dy.aceMw.server.rtuData.dbSv.DbSv;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/1/16 17:16
 * @LastEditTime 2024/1/16 17:16
 * @Description
 */
/**
 * å¤„理控制器开阀上报
 */
public class TkDealOpenValveReport extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealOpenValveReport.class.getName()) ;
    //ç±»ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealOpenValveReport" ;
    /**
     * æ‰§è¡ŒèŠ‚ç‚¹ä»»åŠ¡: å¤„理控制器开阀上报
     * @param data éœ€è¦å¤„理的数据
     */
    @Override
    public void execute(Object data) {
        Data d = (Data) data;
        Object subD = d.getSubData();
        if (subD != null) {
            DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD;
            if (dV1_0_1 != null && dV1_0_1.dataCd83OpenVo != null) {
                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
                DbSv sv = (DbSv)objs[0] ;
                PrController controller = (PrController)objs[1] ;
                try{
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo) ;
                }catch (Exception e){
                    log.error("保存控制器开阀上报时发生异常", e);
                }
            }
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java
@@ -28,15 +28,10 @@
     */
    @Override
    public void execute(Object data) {
        if(data instanceof Data){
            Data d = (Data)data ;
            if(d.getCommandId() == null || d.getCommandId().trim().equals("")){
                //无命令ID
                this.toNextTasks(data);
            }
        Data d = (Data)data ;
        if(d.getCommandId() == null || d.getCommandId().trim().equals("")){
            //无命令ID
            this.toNextTasks(data);
        }
        //Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
        //DbSv sv = (DbSv)objs[0] ;
        //PrController controller = (PrController)objs[1] ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
@@ -10,6 +10,11 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TkPreGenObjs extends TaskSurpport {
    
    private static final Logger log = LogManager.getLogger(TkPreGenObjs.class.getName()) ;
@@ -22,18 +27,18 @@
     * @param data éœ€è¦å¤„理的数据
     */
    @Override
    public void execute(Object data) {
    public void execute(Object data) throws ParseException {
        Data d = (Data)data ;
        String rtuAddr = d.getRtuAddr() ;//TkRtuData里判断了rtuAddr为空
        DbSv sv = (DbSv)SpringContextUtil.getBean(DbSv.class) ;
        if(sv != null){
            PrController controller = sv.getPrControllerByRtuAddr(rtuAddr) ;
            PrController controller = sv.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ;
            if(controller == null){
                //数据库中未查询到控制器(RTU实体)
                //数据库中未查询(已经绑定且控制器地址相符)到控制器(RTU实体)
                //流浪者控制器
                PrControllerTramp rtuTramp = sv.getPrControllerTrampByRtuAddr(rtuAddr);
                if(rtuTramp == null){
                    rtuTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), DateTime.yyyy_MM_dd_HH_mm_ss()) ;
                    rtuTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), new Date()) ;
                    this.taskResult = new Object[]{sv, null, rtuTramp} ;
                    this.toNextOneTask(data, TkDealControllerTramp.taskId);
                }
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
@@ -13,8 +13,11 @@
                    <task id="TkDealControllerTramp" name="处理流浪控制器" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealControllerTramp" />
                    <!-- éžæµæµªè€…RTU,必须放在TkDealControllerTramp后面 -->
                    <!-- è¯†åˆ«ä¸»åŠ¨ä¸ŠæŠ¥æ•°æ® -->
                    <task id="TkFindReport" name="识别上报数据" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindReport">
                    <task id="TkFindReport" name="识别控制器上报数据" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindReport">
                        <task id="TkDealAlarmStatus" name="控制器报警与状态数据" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAlarmStatus" />
                        <task id="TkDealAutoReport" name="控制器自报数据" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealAutoReport" />
                        <task id="TkDealOpenValveReport" name="控制器开阀上报" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealOpenValveReport" />
                        <task id="TkDealCloseValveReport" name="控制器关阀上报" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealCloseValveReport" />
                    </task>
                    <!-- è¯†åˆ«å‘½ä»¤å“åº”数据 -->
                    <task id="TkFindComResponse" name="识别响应命令数据" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindComResponse">
@@ -22,6 +25,7 @@
                        </task>
                    </task>
                </task>
            </task>
        </task>
    </task>
</project>
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/DtoRole.java
@@ -23,7 +23,7 @@
     */
    @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Positive(message = "角色编号必须为大于0的整数")
    private Long roleid;
    private Long roleId;
    /**
     * è§’色名称
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java
@@ -36,13 +36,7 @@
@SuppressWarnings("unchecked")//java版本越高,对泛型约束越严,所以配置SuppressWarnings("unchecked")
public class RoleCtrl {
    //private RoleSv sv ;
    private final RoleSv roleSv;
    //@Autowired
    //private void setSv(RoleSv sv){
    //    this.sv = sv ;
    //}
    /**
     * æ ¹æ®æŒ‡å®šæ¡ä»¶ï¼ˆè§’色编号、角色名称)获取角色列表
@@ -80,68 +74,15 @@
    }
    /**
     * æ·»åŠ è§’è‰²åŠæƒé™åˆ—è¡¨ï¼Œæ·»åŠ å‰åˆ¤æ–­è§’è‰²åæ˜¯å¦å·²å­˜åœ¨
     * @param po è§’色传入对象,包括角色名称、权限列表、操作人编号
     * @param bindingResult
     * @return
     */
    @Operation(summary = "添加角色", description = "提交角色数据及权限数据,进行保存")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @PostMapping(path = "save", consumes = MediaType.APPLICATION_JSON_VALUE)
    @Transactional(rollbackFor = Exception.class)
    @SsoAop()
    public BaseResponse<Boolean> save(@RequestBody @Valid DtoRole po, BindingResult bindingResult){
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        // èŽ·å–è§’è‰²åç§°çº§æƒé™åˆ—è¡¨
        String roleName = Optional.ofNullable(po.getRoleName()).orElse("");
        JSONArray permissions = Optional.ofNullable(JSONArray.parseArray(po.getPermissions())).orElse(JSONArray.parseArray("[]"));
        Long operator = Optional.ofNullable(po.getOperator()).orElse(0L);
        // åˆ¤æ–­è§’色名称是否重名
        Integer recordCount = Optional.ofNullable(roleSv.getRecordCountByName(roleName)).orElse(0);
        if(recordCount > 0)
            return BaseResponseUtils.buildFail(SystemResultCode.ROLE_NAME_EXIST.getMessage());
        // æ·»åŠ è§’è‰²
        BaRole baRole = new BaRole();
        Long roleId = 0L;
        try {
            baRole.setName(roleName);
            baRole.setOperator(operator);
            Date operateTime = new Date();
            baRole.setOperateDt(operateTime);
            baRole.setDeleted(Deleted.NO.getCode());
            roleId = roleSv.addRole(baRole);
        } catch (Exception e) {
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
        if(roleId <= 0)
            return BaseResponseUtils.buildFail(SystemResultCode.ADD_ROLE_FAIL.getMessage());
        // æ·»åŠ æƒé™åˆ—è¡¨
        BaRolePermissions baRolePermissions = new BaRolePermissions();
        baRolePermissions.setRoleid(roleId);
        baRolePermissions.setPermissions(permissions);
        Integer rc = Optional.ofNullable(roleSv.addPermissions(baRolePermissions)).orElse(0);
        if(rc <= 0) {
            return BaseResponseUtils.buildFail(SystemResultCode.ADD_ROLE_FAIL.getMessage());
        }
        return BaseResponseUtils.buildSuccess(true) ;
    }
    /**
     * è§’色授权,当角色编号为空时,实际为添加角色及权限列表
     * è§’色授权
     * 1. å¦‚æžœroleid和roleName都空:提示错误信息
     * 2. å¦‚æžœroleid为空:新建角色且授权
     *      1. æ·»åŠ è§’è‰²è®°å½•
     *      2. æ·»åŠ è§’è‰²ã€æƒé™å…³è”è®°å½•
     * 3. å¦‚æžœroleid不为空:修改角色及授权
     *      1. åˆ é™¤è§’色、权限记录
     *      2. ä¿®æ”¹è§’色信息
     *      3. æ·»åŠ è§’è‰²ã€æƒé™è®°å½•
     * @param po
     * @param bindingResult
     * @return
@@ -163,19 +104,8 @@
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        /**
         * å¦‚æžœroleid和roleName都空:提示错误信息
         * å¦‚æžœroleid为空:新建角色且授权
         *      1. æ·»åŠ è§’è‰²è®°å½•
         *      2. æ·»åŠ è§’è‰²ã€æƒé™å…³è”è®°å½•
         * å¦‚æžœroleid不为空:修改角色授权
         *      1. åˆ é™¤è§’色、权限记录
         *      2. æ·»åŠ è§’è‰²ã€æƒé™è®°å½•
         */
        Long roleId = Optional.ofNullable(po.getRoleid()).orElse(0L);
        Long roleId = Optional.ofNullable(po.getRoleId()).orElse(0L);
        String roleName = Optional.ofNullable(po.getRoleName()).orElse("");
        //String permissions = Optional.ofNullable(po.getPermissions()).orElse("");
        JSONArray permissions = Optional.ofNullable(JSONArray.parseArray(po.getPermissions())).orElse(JSONArray.parseArray("[]"));
        Long operator = Optional.ofNullable(po.getOperator()).orElse(0L);
@@ -199,60 +129,21 @@
            return BaseResponseUtils.buildSuccess(true) ;
        }
        // ä¿®æ”¹è§’色信息
        BaRole baRole = new BaRole();
        baRole.setId(roleId);
        baRole.setName(roleName);
        baRole.setOperator(operator);
        Date operateTime = new Date();
        baRole.setOperateDt(operateTime);
        roleSv.updateRole(baRole);
        // ä¿®æ”¹è§’色授权
        BaRolePermissions baRolePermissions = new BaRolePermissions();
        baRolePermissions.setRoleid(roleId);
        baRolePermissions.setPermissions(permissions);
        roleSv.delPermissionsByRoleId(roleId);
        roleSv.addPermissions(baRolePermissions);
        return BaseResponseUtils.buildSuccess(true) ;
    }
    /**
     * ä¿®æ”¹è§’色
     * @param po ä¿å­˜è§’色form表单对象
     * @return æ˜¯å¦æˆåŠŸ
     */
    @Operation(summary = "修改角色", description = "提交角色数据,进行修改")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE)
    @SsoAop()
    public BaseResponse<Boolean> update(@RequestBody @Valid BaRole po, BindingResult bindingResult){
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        // æŽ¥æ”¶è§’色编号、角色名称、操作人编号
        Long roleId = Optional.ofNullable(po.getId()).orElse(0L);
        String roleName = Optional.ofNullable(po.getName()).orElse("");
        Long operator = Optional.ofNullable(po.getOperator()).orElse(0L);
        // åˆ¤æ–­ä¸»é”®æ˜¯å¦ä¸ºç©º
        if(roleId == 0)
            return BaseResponseUtils.buildFail(SystemResultCode.PLEASE_INPUT_ROLE_ID.getMessage()) ;
        Integer recordCount = 0;
        try {
            po.setName(roleName);
            po.setOperator(operator);
            Date operateTime = new Date();
            po.setOperateDt(operateTime);
            //po.deleted = null ;//设置为null,不做更新
            recordCount = roleSv.updateRole(po);
        } catch (Exception e) {
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
        if(recordCount <= 0)
            return BaseResponseUtils.buildFail("数据库存储失败") ;
        return BaseResponseUtils.buildSuccess(true) ;
    }
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerCtrl.java
@@ -1,5 +1,6 @@
package com.dy.pipIrrProject.controller;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.dy.common.aop.SsoAop;
@@ -81,7 +82,7 @@
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取控制器列表
     * @param controllerCode æŽ§åˆ¶å™¨ç¼–号
     * @param rtuAddr æŽ§åˆ¶å™¨åœ°å€
     * @return ç¬¦åˆæ¡ä»¶çš„æŽ§åˆ¶å™¨åˆ—表
     */
    @Operation(summary = "获得控制器记录", description = "返回取控制器数据")
@@ -126,17 +127,23 @@
    @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
    @Transactional(rollbackFor = Exception.class)
    @SsoAop()
    public BaseResponse<Boolean> add(@RequestBody @Valid DtoController po, BindingResult bindingResult){
    //public BaseResponse<Boolean> add(@RequestBody @Valid DtoController po, BindingResult bindingResult){
    public BaseResponse<Boolean> add(@RequestBody @Valid PrController po, BindingResult bindingResult){
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        PrController prController = DtoToPojo.INSTANCT.po2vo(po);
        //PrController prController = DtoToPojo.INSTANCT.po2vo(po);
        //Date operateTime = new Date();
        //prController.setOperatedt(operateTime);
        //prController.setDeleted((byte)0);
        //prController.setReporttime(operateTime);
        Date operateTime = new Date();
        prController.setOperatedt(operateTime);
        prController.setDeleted((byte)0);
        prController.setReporttime(operateTime);
        Integer rec = Optional.ofNullable(controllerSv.addController(prController)).orElse(0);
        po.setOperateDt(operateTime);
        po.setDeleted((byte)0);
        po.setFindDt(operateTime);
        Integer rec = Optional.ofNullable(controllerSv.addController(po)).orElse(0);
        if(rec == 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.CONTROLLER_FAIL.getMessage());
        }
@@ -173,6 +180,34 @@
    }
    /**
     * èŽ·å–æœªç»‘æŽ§åˆ¶å™¨çš„å–æ°´å£åˆ—è¡¨
     * @return
     */
    @Operation(summary = "获得未绑控制器的取水口记录", description = "返回未绑控制器的取水口数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回控制器数据(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = BaClient.class))}
            )
    })
    @GetMapping(path = "nobinding_intakes")
    @SsoAop()
    public BaseResponse<JSONArray> getNoBindingIntakes(){
        try {
            JSONArray array = controllerSv.getNoBindingIntakes();
            if(array.size() <= 0) {
                return BaseResponseUtils.buildFail(ProjectResultCode.NO_BINDING_INTAKE.getMessage());
            }
            return BaseResponseUtils.buildSuccess(array);
        } catch (Exception e) {
            log.error("查询控制器异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
        }
    }
    /**
     * å¯¼å‡ºæŽ§åˆ¶å™¨åˆ—表
     * @param response
     * @param vo
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java
@@ -1,7 +1,10 @@
package com.dy.pipIrrProject.controller;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.voPr.VoController;
import lombok.extern.slf4j.Slf4j;
@@ -12,6 +15,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
 * @author ZhuBaoMin
@@ -25,6 +29,9 @@
public class ControllerSv {
    @Autowired
    private PrControllerMapper prControllerMapper;
    @Autowired
    private PrIntakeMapper prIntakeMapper;
    /**
     * æ ¹æ®æŒ‡å®šèŽ·å–æŽ§åˆ¶å™¨è®°å½•
@@ -94,7 +101,42 @@
        return rsVo ;
    }
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取未删除的控制器数量
     * @param controllerId
     * @return
     */
    public Integer getRecordCountOfController(Long controllerId) {
        return prControllerMapper.getRecordCountOfController(controllerId);
    }
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取已绑定记录数
     * @param controllerId
     * @return
     */
    public Integer getBindedCount(Long controllerId) {
        return prControllerMapper.getBindedCount(controllerId);
    }
    /**
     * æ ¹æ®ä¸»é”®åˆ é™¤å¤–é”®
     * @param controllerId
     * @return
     */
    public Integer deleteIntakeId(Long controllerId) {
        return prControllerMapper.deleteIntakeId(controllerId);
    }
    /**
     * èŽ·å–æœªç»‘æŽ§åˆ¶å™¨çš„å–æ°´å£åˆ—è¡¨
     * @return
     */
    public JSONArray getNoBindingIntakes() {
        List<Map<String, Object>> list = Optional.ofNullable(prIntakeMapper.getNoBindingIntakes()).orElse(new ArrayList<>());
        JSONArray array= null;
        if(list.size() > 0) {
            array= JSONArray.parseArray(JSON.toJSONString(list));
        }
        return array;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoController.java
File was deleted
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/DtoToPojo.java
File was deleted
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java
@@ -19,14 +19,14 @@
    public static final long serialVersionUID = 1L;
    /**
     * å–水口编号
     * å–水口ID
     */
    @Schema(description = "取水口ID", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "取水口ID不能为空")
    private Long intakeId;
    /**
     * æŽ§åˆ¶å™¨ç¼–号
     * æŽ§åˆ¶å™¨ID
     */
    @Schema(description = "控制器ID", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "控制器ID不能为空")
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java
@@ -6,6 +6,8 @@
import com.dy.common.webUtil.QueryResultVo;
import com.dy.common.webUtil.ResultCodeMsg;
import com.dy.pipIrrGlobal.pojoBa.BaClient;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
import com.dy.pipIrrProject.controller.ControllerSv;
import com.dy.pipIrrProject.intake.IntakeSv;
@@ -24,6 +26,8 @@
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -44,9 +48,15 @@
    private final ControllerSv controllerSv;
    /**
     * æ·»åŠ å–æ°´å£/控制器捆绑记录
     *      è‹¥å–水口或控制器不存在需提示用户
     *      è‹¥å–水口已经与控制器绑定需提示用户
     * å–水口绑定控制器
     * 1. æŽ¥æ”¶å–水口ID及流浪控制器ID,并验证取水口和控制器是否存在
     * 2. åˆ¤æ–­è¯¥æŽ§åˆ¶å™¨æ˜¯å¦å­˜åœ¨æœªè§£ç»‘记录,如果存在提示用户该控制器存在未解绑记录
     * 3. ç»„装控制器对象插入控制器表中
     * 4. æ·»åŠ ç»‘å®šè®°å½•
     * 5. åˆ é™¤æµæµªæŽ§åˆ¶å™¨ï¼ˆç‰©ç†åˆ é™¤ï¼‰
     * @param po
     * @param bindingResult
     * @return
     */
    @Operation(summary = "添加绑定记录", description = "添加绑定记录")
    @ApiResponses(value = {
@@ -60,39 +70,70 @@
    @PostMapping(path = "bind", consumes = MediaType.APPLICATION_JSON_VALUE)
    @Transactional(rollbackFor = Exception.class)
    @SsoAop()
    public BaseResponse<Boolean> bind(@RequestBody @Valid DtoIntakeController po, BindingResult bindingResult){
    public BaseResponse<Boolean> bind(@RequestBody @Valid DtoIntakeController po, BindingResult bindingResult) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if(bindingResult != null && bindingResult.hasErrors()){
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
        // æ ¹æ®ç¼–号分别获取取水口、控制器未删除记录数
        Integer recIntke = Optional.ofNullable(intakeSv.getRecordCountOfIntake(po.getIntakeId())).orElse(0);
        Integer recController = Optional.ofNullable(controllerSv.getRecordCountOfController(po.getControllerId())).orElse(0);
        if(recIntke == 0 || recController == 0) {
        // æŽ¥æ”¶å‚æ•°
        Long intakeId = po.getIntakeId();
        Long controllerId = po.getControllerId();
        String remarks = po.getRemarks();
        Long operator = po.getOperator();
        // æ ¹æ®ç¼–号分别获取取水口记录数、流浪控制器信息,判断取水口及控制器是否存在
        Integer recIntke = Optional.ofNullable(intakeSv.getRecordCountOfIntake(intakeId)).orElse(0);
        PrControllerTramp prControllerTramp = intakeControllerSv.getTrampControllerInfo(controllerId);
        //Map map_TrampController = Optional.ofNullable(intakeControllerSv.getTrampControllerInfo(controllerId)).orElse(new HashMap());
        if(recIntke == 0 || prControllerTramp == null) {
            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_OR_CONTROLLER_NO_EXIST.getMessage());
        }
        Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)1)).orElse(0);
        if(recordCount > 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_HAS_BINDED_CONTROLLER.getMessage());
        // æ ¹æ®æŽ§åˆ¶å™¨ç¼–号判断该控制器是否存在未解绑记录
        Integer recBinded = Optional.ofNullable(controllerSv.getBindedCount(controllerId)).orElse(0);
        if(recBinded > 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.CONTROLLER_BINDED.getMessage());
        }
        PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po);
        // æ·»åŠ æŽ§åˆ¶å™¨è®°å½•
        PrController prController = new PrController();
        prController.setIntakeId(intakeId);
        prController.setRtuAddr(prControllerTramp.getRtuAddr());
        prController.setProtocol(prControllerTramp.getProtocol());
        prController.setFindDt(prControllerTramp.getFindDt());
        prController.setAddWays((byte)1);
        prController.setOperator(operator);
        Date operateTime = new Date();
        prController.setOperateDt(operateTime);
        prController.setDeleted((byte)0);
        Integer rec_addController = Optional.ofNullable(controllerSv.addController(prController)).orElse(0);
        if(rec_addController == 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
        }
        // æ·»åŠ ç»‘å®šè®°å½•
        PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po);
        prIntakeController.setOperatedt(operateTime);
        prIntakeController.setOperatetype((byte)1);
        Integer rec = Optional.ofNullable(intakeControllerSv.addRecord(prIntakeController)).orElse(0);
        if(rec == 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
        }
        // æ ¹æ®æµæµªæŽ§åˆ¶å™¨ç¼–号删除流浪控制器记录
        intakeControllerSv.deleteTrampController(controllerId);
        return BaseResponseUtils.buildSuccess(true) ;
    }
    /**
     * æ·»åŠ å–æ°´å£/控制器解绑记录
     * 1. åˆ¤æ–­å–水口是否存在
     * 2. åˆ¤æ–­æŽ§åˆ¶å™¨æ˜¯å¦å­˜åœ¨
     * 3. åˆ¤æ–­å–水口、控制器解绑关系是否已存在
     * å–水口解绑控制器
     * 1. æŽ¥æ”¶å–水口ID及流浪控制器ID,并验证取水口和控制器是否存在
     * 2. æ·»åŠ è§£ç»‘è®°å½•
     * 3. åˆ é™¤æŽ§åˆ¶å™¨å¤–é”®
     * @param po
     * @param bindingResult
     * @return
     */
    @Operation(summary = "添加解绑记录", description = "添加解绑记录")
    @ApiResponses(value = {
@@ -118,20 +159,28 @@
            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_OR_CONTROLLER_NO_EXIST.getMessage());
        }
        Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)2)).orElse(0);
        if(recordCount > 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_CONTROLLER_HAS_UNBOUND.getMessage());
        }
        // åˆ¤æ–­æœ€åŽæ“ä½œè®°å½•是否为解绑记录
        //Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)2)).orElse(0);
        //if(recordCount > 0) {
        //    return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_CONTROLLER_HAS_UNBOUND.getMessage());
        //}
        // æ·»åŠ è§£ç»‘è®°å½•
        PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po);
        Date operateTime = new Date();
        prIntakeController.setOperatedt(operateTime);
        prIntakeController.setOperatetype((byte)2);
        Integer rec = Optional.ofNullable(intakeControllerSv.addRecord(prIntakeController)).orElse(0);
        if(rec == 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
        }
        // åˆ é™¤æŽ§åˆ¶å™¨å¤–é”®
        Integer rec_deleteIntakeId = Optional.ofNullable(controllerSv.deleteIntakeId(po.getControllerId())).orElse(0);
        if(rec_deleteIntakeId == 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage());
        }
        return BaseResponseUtils.buildSuccess(true) ;
    }
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java
@@ -1,6 +1,8 @@
package com.dy.pipIrrProject.intakeController;
import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper;
import com.dy.pipIrrGlobal.daoPr.PrIntakeControllerMapper;
import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +23,9 @@
public class IntakeControllerSv {
    @Autowired
    private PrIntakeControllerMapper prIntakeControllerMapper;
    @Autowired
    private PrControllerTrampMapper prControllerTrampMapper;
    /**
     * æ ¹æ®å–水口编号、控制器编号、操作类别获取记录数量
@@ -59,4 +64,31 @@
    List<Map<String, Object>> getBindsByControllerId(Long controllerId) {
        return prIntakeControllerMapper.getBindsByControllerId(controllerId);
    }
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取流浪控制器地址
     * @param controllerId æµæµªæŽ§åˆ¶å™¨ç¼–号
     * @return æµæµªæŽ§åˆ¶å™¨åœ°å€
     */
    //public String getTrampRtuAddr(Long controllerId) {
    //    return prControllerTrampMapper.getTrampRtuAddr(controllerId);
    //}
    /**
     * æ ¹æ®æŽ§åˆ¶å™¨ç¼–号获取流浪控制器信息
     * @param controllerId
     * @return
     */
    public PrControllerTramp getTrampControllerInfo(Long controllerId) {
        return prControllerTrampMapper.getTrampControllerInfo(controllerId);
    }
    /**
     * æ ¹æ®æµæµªæŽ§åˆ¶å™¨ç¼–号删除流浪控制器记录
     * @param controllerId
     * @return
     */
    public Integer deleteTrampController(Long controllerId) {
        return prControllerTrampMapper.deleteByPrimaryKey(controllerId);
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
@@ -28,6 +28,7 @@
    UPDATE_INTAKE(20003, "修改取水口数据失败"),
    PLEASE_INPUT_INTAKE_ID(20004, "取水口编号不为空"),
    DELETE_INTAKE_FAIL(20005, "取水口删除失败"),
    NO_BINDING_INTAKE(20006, "没有未绑定的取水口"),
    /**
     * æŽ§åˆ¶å™¨
@@ -46,6 +47,7 @@
    INTAKE_NO_RECORDS(40004, "该取水口无绑定记录"),
    CONTROLLER_NO_RECORDS(40005, "该控制器无绑定记录"),
    INTAKE_OR_CONTROLLER_NO_EXIST(40006, "取水口或控制器不存在"),
    CONTROLLER_BINDED(40007, "该控制器尚未解绑"),
    /**
     * æµé‡ç›‘测站
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
@@ -7,6 +7,7 @@
import com.dy.common.webUtil.ResultCodeMsg;
import com.dy.pipIrrGlobal.pojoSe.SeActiveCard;
import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
import com.dy.pipIrrGlobal.util.Constant;
import com.dy.pipIrrGlobal.voSe.VoActiveCard;
import com.dy.pipIrrSell.clientCard.CardStateENUM;
import com.dy.pipIrrSell.clientCard.ClientCardSv;
@@ -23,7 +24,6 @@
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.BindingResult;
@@ -48,8 +48,8 @@
    private final ClientCardSv clientCardSv;
    private final RechargeCtrl rechargeCtrl;
    @Value("${projectCode.ym}")
    private Integer projectCode;
    //@Value("${projectCode.ym}")
    //private Integer projectCode;
    /**
     * èŽ·å–å¼€å¡è®°å½•
@@ -222,7 +222,8 @@
        }
        Map map = new HashMap();
        map.put("projectCode", projectCode);
        //map.put("projectCode", projectCode);
        map.put("projectCode", Constant.projectCode_ym);
        map.put("cardNum", cardNum);
        return BaseResponseUtils.buildSuccess(map) ;
    }
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/client/SeClientToVoClient.java
@@ -20,7 +20,7 @@
    @Mapping(target = "name", source = "name")
    @Mapping(target = "clientNum", source = "clientnum")
    @Mapping(target = "phone", source = "phone")
    @Mapping(target = "idCard", source = "idcard")
    @Mapping(target = "idcard", source = "idcard")
    //@Mapping(target = "cardCount", source = "cardCount")
    @Mapping(target = "address", source = "address")
    @Mapping(target = "operateDt", source = "operatedt")
pipIrr-platform/Îĵµ/ȡˮ¿Ú¿ØÖÆÆ÷¼°²â¿ØÊý¾Ý¹ØÏµ.docx
Binary files differ
pipIrr-platform/Îĵµ/ȡˮ¿Ú¿ØÖÆÆ÷¼°²â¿ØÊý¾Ý¹ØÏµ.vsd
Binary files differ