liurunyu
2024-02-27 4342b12d28b15e61bbed4d4d5e64a6a2bacae952
1、完善代码;
2、实现开闭上报处理
1 文件已复制
4 文件已重命名
15个文件已修改
5个文件已添加
2个文件已删除
2009 ■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd81Vo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountHistoryMapper.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java 65 ●●●●● 补丁 | 查看 | 原始文档 | 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/pojoRm/RmIntakeAmountHistory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveHistory.java 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveLast.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountHistoryMapper.xml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml 304 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml 323 ●●●●● 补丁 | 查看 | 原始文档 | 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/dbSv/DbSv.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealControllerNoTramp.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/Tree_.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd81Vo.java
@@ -2,6 +2,9 @@
import lombok.Data;
/**
 * 随机自报报
 */
@Data
public class DataCd81Vo {
    public DataAlarmVo alarmVo ;//报警
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
@@ -9,7 +9,7 @@
    // 6、流量计故障关阀;7、紧急关阀;8、用户远程开阀;9、用户远程关阀;
    public Byte type ;
    public Double totalAmount; //累计流量:5字节BCD码,取值范围0~9999999999,单位为m3。
    public String IcCardNo;//IC卡编号
    public String icCardNo;//IC卡编号
    public String icCardAddr;//ic卡地址
    public Double remainMoney ;//剩余金额:用户余额4字节BCD码,取值范围0.00~999999.99,单位为元
    public String openDt ;//用水户用水开始时间:6字节BCD码,顺序是年月日时分秒,其中公元年=2000+年。
@@ -29,7 +29,7 @@
        sb.append(totalAmount==null?"":totalAmount);
        sb.append("\n");
        sb.append("      IC卡编号:");
        sb.append(IcCardNo);
        sb.append(icCardNo);
        sb.append("\n");
        sb.append("      ic卡地址:");
        sb.append(icCardAddr);
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java
@@ -2,6 +2,9 @@
import lombok.Data;
/**
 * 阀开工作报
 */
@Data
public class DataCd84Vo {
    public String cardNo ;//IC卡编号
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java
@@ -2,6 +2,9 @@
import lombok.Data;
/**
 * 遥测站自报实时数据
 */
@Data
public class DataCdC0Vo {
    public Double instantAmount; //瞬时流量:5字节BCD码,取值范围0~9999999.999,单位为m3/h。
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java
@@ -24,7 +24,7 @@
    public DataCd98Vo dataCd98Vo;//APP远程关阀应答
    public DataCdC0Vo dataCdC0Vo;//终端自报实时数据
    public String dt ;//通信中间件产生发报时间(yyyy-MM-dd hh:mm:ss)
    public String dt ;//通信中间件产生收报时间(yyyy-MM-dd hh:mm:ss)
    public String toString(){
        StringBuffer sb = new StringBuffer() ;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
@@ -174,11 +174,11 @@
        cdData.totalAmount += tpInt * 100000000.0 ;
        //用水户号数据格式:5字节BCD码低位在前高位在后。
        cdData.IcCardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
        cdData.icCardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
        index += 5 ;
        //IC卡号格式:4字节HEX码低位在前高位在后。
        cdData.IcCardNo = 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-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountHistoryMapper.java
File was renamed from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountMapper.java
@@ -1,6 +1,6 @@
package com.dy.pipIrrGlobal.daoRm;
import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount;
import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountHistory;
import org.apache.ibatis.annotations.Mapper;
/**
@@ -10,7 +10,7 @@
 * @Description
 */   
@Mapper
public interface RmIntakeAmountMapper {
public interface RmIntakeAmountHistoryMapper {
    /**
     * delete by primary key
     * @param id primaryKey
@@ -23,33 +23,33 @@
     * @param record the record
     * @return insert count
     */
    int insert(RmIntakeAmount record);
    int insert(RmIntakeAmountHistory record);
    /**
     * insert record to table selective
     * @param record the record
     * @return insert count
     */
    int insertSelective(RmIntakeAmount record);
    int insertSelective(RmIntakeAmountHistory record);
    /**
     * select by primary key
     * @param id primary key
     * @return object by primary key
     */
    RmIntakeAmount selectByPrimaryKey(Long id);
    RmIntakeAmountHistory selectByPrimaryKey(Long id);
    /**
     * update record selective
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RmIntakeAmount record);
    int updateByPrimaryKeySelective(RmIntakeAmountHistory record);
    /**
     * update record
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmIntakeAmount record);
    int updateByPrimaryKey(RmIntakeAmountHistory record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
copy from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountMapper.java copy to pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveHistoryMapper.java
File was copied from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmIntakeAmountMapper.java
@@ -1,18 +1,19 @@
package com.dy.pipIrrGlobal.daoRm;
import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory;
import org.apache.ibatis.annotations.Mapper;
/**
 * @Author liurunyu
 * @Date 2024/1/17 9:07
 * @LastEditTime 2024/1/17 9:07
 * @Date 2024/2/23 15:42
 * @LastEditTime 2024/2/23 15:42
 * @Description
 */   
@Mapper
public interface RmIntakeAmountMapper {
public interface RmOpenCloseValveHistoryMapper {
    /**
     * delete by primary key
     *
     * @param id primaryKey
     * @return deleteCount
     */
@@ -20,36 +21,41 @@
    /**
     * insert record to table
     *
     * @param record the record
     * @return insert count
     */
    int insert(RmIntakeAmount record);
    int insert(RmOpenCloseValveHistory record);
    /**
     * insert record to table selective
     *
     * @param record the record
     * @return insert count
     */
    int insertSelective(RmIntakeAmount record);
    int insertSelective(RmOpenCloseValveHistory record);
    /**
     * select by primary key
     *
     * @param id primary key
     * @return object by primary key
     */
    RmIntakeAmount selectByPrimaryKey(Long id);
    RmOpenCloseValveHistory selectByPrimaryKey(Long id);
    /**
     * update record selective
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RmIntakeAmount record);
    int updateByPrimaryKeySelective(RmOpenCloseValveHistory record);
    /**
     * update record
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmIntakeAmount record);
    int updateByPrimaryKey(RmOpenCloseValveHistory record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveLastMapper.java
New file
@@ -0,0 +1,65 @@
package com.dy.pipIrrGlobal.daoRm;
import com.dy.pipIrrGlobal.pojoRm.RmAutoReportLast;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * @Author liurunyu
 * @Date 2024/2/23 16:00
 * @LastEditTime 2024/2/23 16:00
 * @Description
 */
@Mapper
public interface RmOpenCloseValveLastMapper {
    /**
     * 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(RmOpenCloseValveLast record);
    /**
     * insert record to table selective
     * @param record the record
     * @return insert count
     */
    int insertSelective(RmOpenCloseValveLast record);
    /**
     * select by primary key
     * @param id primary key
     * @return object by primary key
     */
    RmOpenCloseValveLast selectByPrimaryKey(Long id);
    /**
     * select by rtuAddr
     * @param rtuAddr rtuAddr
     * @return object by rtuAddr
     */
    List<RmOpenCloseValveLast> selectByRtuAddr(String rtuAddr);
    /**
     * update record selective
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RmOpenCloseValveLast record);
    /**
     * update record
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RmOpenCloseValveLast record);
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoRm/RmOpenCloseValveReportMapper.java
File was deleted
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmountHistory.java
File was renamed from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmIntakeAmount.java
@@ -25,7 +25,7 @@
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "取水口取水量")
public class RmIntakeAmount implements BaseEntity {
public class RmIntakeAmountHistory implements BaseEntity {
    public static final long serialVersionUID = 202401170908001L;
    /**
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveHistory.java
File was renamed from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveReport.java
@@ -1,6 +1,5 @@
package com.dy.pipIrrGlobal.pojoRm;
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -15,9 +14,9 @@
/**
 * @Author liurunyu
 * @Date 2024/1/16 19:44
 * @LastEditTime 2024/1/16 19:44
 * @Description 控制器开关阀记录
 * @Date 2024/2/23 15:42
 * @LastEditTime 2024/2/23 15:42
 * @Description 控制器开关阀上报数据
 */
@TableName(value="rm_open_close_valve_report", autoResultMap = true)
@Data
@@ -25,148 +24,143 @@
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "控制器开关阀记录")
public class RmOpenCloseValveReport implements BaseEntity {
@Schema(name = "控制器开关阀上报数据")
public class RmOpenCloseValveHistory implements BaseEntity {
    public static final long serialVersionUID = 202401161929001L;
    public static final long serialVersionUID = 202402231450001L;
    /**
     * 主键
     */
    @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;
    public Long controllerId;
    /**
    * 取水口实体ID(外键)
    */
    @Schema(description = "取水口实体外键", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    public Long intakeid;
    public Long intakeId;
    /**
    * 控制器地址
    */
    @Schema(description = "控制器地址", requiredMode = Schema.RequiredMode.REQUIRED)
    public String rtuaddr;
    public String rtuAddr;
    /**
    * 开阀数据接收时间
    * 开阀数据接收日期时间
    */
    @Schema(description = "开阀数据接收时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Schema(description = "数据接收日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date opdt;
    public Date opDt;
    /**
    * 开阀类型
    */
    @Schema(description = "开阀类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte optype;
    public Byte opType;
    /**
    * 开阀时累计流量
    */
    @Schema(description = "开阀时累计流量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double optotalamount;
    public Double opTotalAmount;
    /**
    * 开阀IC卡编号
    */
    @Schema(description = "开阀IC卡编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String opiccardno;
    public String opIcCardNo;
    /**
    * 开阀ic卡地址
    */
    @Schema(description = "开阀ic卡地址", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String opiccardaddr;
    public String opIcCardAddr;
    /**
    * 开阀时剩余金额
    */
    @Schema(description = "开阀时剩余金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double opremainmoney;
    public Double opRemainMoney;
    /**
    * 开阀时控制器时钟
    */
    @Schema(description = "开阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date opendt;
    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 Date clDt;
    /**
    * 关阀类型
    */
    @Schema(description = "关阀类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Byte cltype;
    public Byte clType;
    /**
    * 关阀时累计流量
    */
    @Schema(description = "关阀时累计流量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double cltotalamount;
    public Double clTotalAmount;
    /**
     * 关阀时IC卡编号
     */
    @Schema(description = "关阀时IC卡编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String cliccardno;
    public String clIcCardNo;
    /**
    * 关阀时IC卡地址
    */
    @Schema(description = "关阀时IC卡地址", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public String cliccardaddr;
    public String clIcCardAddr;
    /**
    * 关阀时剩余金额
    */
    @Schema(description = "关阀时剩余金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double clremainmoney;
    public Double clRemainMoney;
    /**
    * 关阀报中本次用水量
    */
    @Schema(description = "关阀报中本次用水量", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Double clthisamount;
    @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 Double clThisMoney;
    /**
    * 关阀报中本次用水时长(分钟)
    */
    @Schema(description = "关阀报中本次用水时长(分钟)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Integer clthistime;
    @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;
    public Date clOpenDt;
    /**
    * 关阀时控制器时钟
    */
    @Schema(description = "关阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date closedt;
    public Date closeDt;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmOpenCloseValveLast.java
New file
@@ -0,0 +1,173 @@
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.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/2/23 16:00
 * @LastEditTime 2024/2/23 16:00
 * @Description
 */
@TableName(value="rm_open_close_valve_last", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "控制器开关阀上报最新数据")
public class RmOpenCloseValveLast {
    public static final long serialVersionUID = 202402231602001L;
    /**
     * 主键
     */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    public Long id;
    /**
     * 由最新数据持有历史数据中的最新记录ID,以方便快速查询
     * json不序列化此属性,即不向前端页面发送及显示
     */
    @JSONField(serialize = false)
    public Long lastHistoryId;
    /**
     * 控制器实体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)
    public Date openDt;
    /**
     * 关阀数据接收日期时间
     */
    @Schema(description = "关阀数据接收日期时间", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    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)
    public Date clOpenDt;
    /**
     * 关阀时控制器时钟
     */
    @Schema(description = "关阀时控制器时钟", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Date closeDt;
}
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountHistoryMapper.xml
File was renamed from pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmIntakeAmountMapper.xml
@@ -1,9 +1,9 @@
<?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">
<mapper namespace="com.dy.pipIrrGlobal.daoRm.RmIntakeAmountHistoryMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountHistory">
    <!--@mbg.generated-->
    <!--@Table rm_intake_amount-->
    <!--@Table rm_intake_amount_history-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="intakeId" jdbcType="BIGINT" property="intakeid" />
    <result column="amount" jdbcType="DOUBLE" property="amount" />
@@ -23,17 +23,17 @@
    <!--@mbg.generated-->
    select 
    <include refid="Base_Column_List" />
    from rm_intake_amount
    from rm_intake_amount_history
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_intake_amount
    delete from rm_intake_amount_history
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountHistory">
    <!--@mbg.generated-->
    insert into rm_intake_amount (id, intakeId, amount,
    insert into rm_intake_amount_history (id, intakeId, amount,
      loss, controllerIdLast, dtLast, 
      amountLast, totalAmountLast, resourceTypeLast
      )
@@ -42,9 +42,9 @@
      #{amountlast,jdbcType=DOUBLE}, #{totalamountlast,jdbcType=DOUBLE}, #{resourcetypelast,jdbcType=TINYINT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountHistory">
    <!--@mbg.generated-->
    insert into rm_intake_amount
    insert into rm_intake_amount_history
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
@@ -104,9 +104,9 @@
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountHistory">
    <!--@mbg.generated-->
    update rm_intake_amount
    update rm_intake_amount_history
    <set>
      <if test="intakeid != null">
        intakeId = #{intakeid,jdbcType=BIGINT},
@@ -135,9 +135,9 @@
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmount">
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountHistory">
    <!--@mbg.generated-->
    update rm_intake_amount
    update rm_intake_amount_history
    set intakeId = #{intakeid,jdbcType=BIGINT},
      amount = #{amount,jdbcType=DOUBLE},
      loss = #{loss,jdbcType=DOUBLE},
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
New file
@@ -0,0 +1,304 @@
<?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.RmOpenCloseValveHistoryMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    <!--@Table rm_open_close_valve_history-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="controller_id" jdbcType="BIGINT" property="controllerId" />
    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
    <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
    <result column="op_dt" jdbcType="DATE" property="opDt" />
    <result column="op_type" jdbcType="TINYINT" property="opType" />
    <result column="op_total_amount" jdbcType="DOUBLE" property="opTotalAmount" />
    <result column="op_ic_card_no" jdbcType="VARCHAR" property="opIcCardNo" />
    <result column="op_ic_card_addr" jdbcType="VARCHAR" property="opIcCardAddr" />
    <result column="op_remain_money" jdbcType="DOUBLE" property="opRemainMoney" />
    <result column="open_dt" jdbcType="DATE" property="openDt" />
    <result column="cl_dt" jdbcType="DATE" property="clDt" />
    <result column="cl_type" jdbcType="TINYINT" property="clType" />
    <result column="cl_total_amount" jdbcType="DOUBLE" property="clTotalAmount" />
    <result column="cl_ic_card_no" jdbcType="VARCHAR" property="clIcCardNo" />
    <result column="cl_ic_card_addr" jdbcType="VARCHAR" property="clIcCardAddr" />
    <result column="cl_remain_money" jdbcType="DOUBLE" property="clRemainMoney" />
    <result column="cl_this_amount" jdbcType="DOUBLE" property="clThisAmount" />
    <result column="cl_this_money" jdbcType="DOUBLE" property="clThisMoney" />
    <result column="cl_this_time" jdbcType="INTEGER" property="clThisTime" />
    <result column="cl_open_dt" jdbcType="DATE" property="clOpenDt" />
    <result column="close_dt" jdbcType="DATE" property="closeDt" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, controller_id, intake_id, rtu_addr, op_dt, op_type, op_total_amount, op_ic_card_no,
    op_ic_card_addr, op_remain_money, open_dt, cl_dt, cl_type, cl_total_amount, cl_ic_card_no,
    cl_ic_card_addr, cl_remain_money, cl_this_amount, cl_this_money, cl_this_time, cl_open_dt,
    close_dt
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_open_close_valve_history
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_open_close_valve_history
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_history (id, controller_id, intake_id,
      rtu_addr, op_dt, op_type,
      op_total_amount, op_ic_card_no, op_ic_card_addr,
      op_remain_money, open_dt, cl_dt,
      cl_type, cl_total_amount, cl_ic_card_no,
      cl_ic_card_addr, cl_remain_money, cl_this_amount,
      cl_this_money, cl_this_time, cl_open_dt,
      close_dt)
    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.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_history
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="controllerId != null">
        controller_id,
      </if>
      <if test="intakeId != null">
        intake_id,
      </if>
      <if test="rtuAddr != null">
        rtu_addr,
      </if>
      <if test="opDt != null">
        op_dt,
      </if>
      <if test="opType != null">
        op_type,
      </if>
      <if test="opTotalAmount != null">
        op_total_amount,
      </if>
      <if test="opIcCardNo != null">
        op_ic_card_no,
      </if>
      <if test="opIcCardAddr != null">
        op_ic_card_addr,
      </if>
      <if test="opRemainMoney != null">
        op_remain_money,
      </if>
      <if test="openDt != null">
        open_dt,
      </if>
      <if test="clDt != null">
        cl_dt,
      </if>
      <if test="clType != null">
        cl_type,
      </if>
      <if test="clTotalAmount != null">
        cl_total_amount,
      </if>
      <if test="clIcCardNo != null">
        cl_ic_card_no,
      </if>
      <if test="clIcCardAddr != null">
        cl_ic_card_addr,
      </if>
      <if test="clRemainMoney != null">
        cl_remain_money,
      </if>
      <if test="clThisAmount != null">
        cl_this_amount,
      </if>
      <if test="clThisMoney != null">
        cl_this_money,
      </if>
      <if test="clThisTime != null">
        cl_this_time,
      </if>
      <if test="clOpenDt != null">
        cl_open_dt,
      </if>
      <if test="closeDt != null">
        close_dt,
      </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.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    update rm_open_close_valve_history
    <set>
      <if test="controllerId != null">
        controller_id = #{controllerId,jdbcType=BIGINT},
      </if>
      <if test="intakeId != null">
        intake_id = #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="opDt != null">
        op_dt = #{opDt,jdbcType=DATE},
      </if>
      <if test="opType != null">
        op_type = #{opType,jdbcType=TINYINT},
      </if>
      <if test="opTotalAmount != null">
        op_total_amount = #{opTotalAmount,jdbcType=DOUBLE},
      </if>
      <if test="opIcCardNo != null">
        op_ic_card_no = #{opIcCardNo,jdbcType=VARCHAR},
      </if>
      <if test="opIcCardAddr != null">
        op_ic_card_addr = #{opIcCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="opRemainMoney != null">
        op_remain_money = #{opRemainMoney,jdbcType=DOUBLE},
      </if>
      <if test="openDt != null">
        open_dt = #{openDt,jdbcType=DATE},
      </if>
      <if test="clDt != null">
        cl_dt = #{clDt,jdbcType=DATE},
      </if>
      <if test="clType != null">
        cl_type = #{clType,jdbcType=TINYINT},
      </if>
      <if test="clTotalAmount != null">
        cl_total_amount = #{clTotalAmount,jdbcType=DOUBLE},
      </if>
      <if test="clIcCardNo != null">
        cl_ic_card_no = #{clIcCardNo,jdbcType=VARCHAR},
      </if>
      <if test="clIcCardAddr != null">
        cl_ic_card_addr = #{clIcCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="clRemainMoney != null">
        cl_remain_money = #{clRemainMoney,jdbcType=DOUBLE},
      </if>
      <if test="clThisAmount != null">
        cl_this_amount = #{clThisAmount,jdbcType=DOUBLE},
      </if>
      <if test="clThisMoney != null">
        cl_this_money = #{clThisMoney,jdbcType=DOUBLE},
      </if>
      <if test="clThisTime != null">
        cl_this_time = #{clThisTime,jdbcType=INTEGER},
      </if>
      <if test="clOpenDt != null">
        cl_open_dt = #{clOpenDt,jdbcType=DATE},
      </if>
      <if test="closeDt != null">
        close_dt = #{closeDt,jdbcType=DATE},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory">
    <!--@mbg.generated-->
    update rm_open_close_valve_history
    set controller_id = #{controllerId,jdbcType=BIGINT},
      intake_id = #{intakeId,jdbcType=BIGINT},
      rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      op_dt = #{opDt,jdbcType=DATE},
      op_type = #{opType,jdbcType=TINYINT},
      op_total_amount = #{opTotalAmount,jdbcType=DOUBLE},
      op_ic_card_no = #{opIcCardNo,jdbcType=VARCHAR},
      op_ic_card_addr = #{opIcCardAddr,jdbcType=VARCHAR},
      op_remain_money = #{opRemainMoney,jdbcType=DOUBLE},
      open_dt = #{openDt,jdbcType=DATE},
      cl_dt = #{clDt,jdbcType=DATE},
      cl_type = #{clType,jdbcType=TINYINT},
      cl_total_amount = #{clTotalAmount,jdbcType=DOUBLE},
      cl_ic_card_no = #{clIcCardNo,jdbcType=VARCHAR},
      cl_ic_card_addr = #{clIcCardAddr,jdbcType=VARCHAR},
      cl_remain_money = #{clRemainMoney,jdbcType=DOUBLE},
      cl_this_amount = #{clThisAmount,jdbcType=DOUBLE},
      cl_this_money = #{clThisMoney,jdbcType=DOUBLE},
      cl_this_time = #{clThisTime,jdbcType=INTEGER},
      cl_open_dt = #{clOpenDt,jdbcType=DATE},
      close_dt = #{closeDt,jdbcType=DATE}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveLastMapper.xml
New file
@@ -0,0 +1,323 @@
<?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.RmOpenCloseValveLastMapper">
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    <!--@Table rm_open_close_valve_last-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="last_history_id" jdbcType="BIGINT" property="lastHistoryId" />
    <result column="controller_id" jdbcType="BIGINT" property="controllerId" />
    <result column="intake_id" jdbcType="BIGINT" property="intakeId" />
    <result column="rtu_addr" jdbcType="VARCHAR" property="rtuAddr" />
    <result column="op_dt" jdbcType="DATE" property="opDt" />
    <result column="op_type" jdbcType="TINYINT" property="opType" />
    <result column="op_total_amount" jdbcType="DOUBLE" property="opTotalAmount" />
    <result column="op_ic_card_no" jdbcType="VARCHAR" property="opIcCardNo" />
    <result column="op_ic_card_addr" jdbcType="VARCHAR" property="opIcCardAddr" />
    <result column="op_remain_money" jdbcType="DOUBLE" property="opRemainMoney" />
    <result column="open_dt" jdbcType="DATE" property="openDt" />
    <result column="cl_dt" jdbcType="DATE" property="clDt" />
    <result column="cl_type" jdbcType="TINYINT" property="clType" />
    <result column="cl_total_amount" jdbcType="DOUBLE" property="clTotalAmount" />
    <result column="cl_ic_card_no" jdbcType="VARCHAR" property="clIcCardNo" />
    <result column="cl_ic_card_addr" jdbcType="VARCHAR" property="clIcCardAddr" />
    <result column="cl_remain_money" jdbcType="DOUBLE" property="clRemainMoney" />
    <result column="cl_this_amount" jdbcType="DOUBLE" property="clThisAmount" />
    <result column="cl_this_money" jdbcType="DOUBLE" property="clThisMoney" />
    <result column="cl_this_time" jdbcType="INTEGER" property="clThisTime" />
    <result column="cl_open_dt" jdbcType="DATE" property="clOpenDt" />
    <result column="close_dt" jdbcType="DATE" property="closeDt" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, last_history_id, controller_id, intake_id, rtu_addr, op_dt, op_type, op_total_amount, op_ic_card_no,
    op_ic_card_addr, op_remain_money, open_dt, cl_dt, cl_type, cl_total_amount, cl_ic_card_no,
    cl_ic_card_addr, cl_remain_money, cl_this_amount, cl_this_money, cl_this_time, cl_open_dt,
    close_dt
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from rm_open_close_valve_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_open_close_valve_last
    where rtu_addr = #{rtuAddr,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from rm_open_close_valve_last
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_last (id, last_history_id, controller_id, intake_id,
      rtu_addr, op_dt, op_type,
      op_total_amount, op_ic_card_no, op_ic_card_addr,
      op_remain_money, open_dt, cl_dt,
      cl_type, cl_total_amount, cl_ic_card_no,
      cl_ic_card_addr, cl_remain_money, cl_this_amount,
      cl_this_money, cl_this_time, cl_open_dt,
      close_dt)
    values (#{id,jdbcType=BIGINT}, #{lastHistoryId,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.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    insert into rm_open_close_valve_last
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="lastHistoryId != null">
        last_history_id,
      </if>
      <if test="controllerId != null">
        controller_id,
      </if>
      <if test="intakeId != null">
        intake_id,
      </if>
      <if test="rtuAddr != null">
        rtu_addr,
      </if>
      <if test="opDt != null">
        op_dt,
      </if>
      <if test="opType != null">
        op_type,
      </if>
      <if test="opTotalAmount != null">
        op_total_amount,
      </if>
      <if test="opIcCardNo != null">
        op_ic_card_no,
      </if>
      <if test="opIcCardAddr != null">
        op_ic_card_addr,
      </if>
      <if test="opRemainMoney != null">
        op_remain_money,
      </if>
      <if test="openDt != null">
        open_dt,
      </if>
      <if test="clDt != null">
        cl_dt,
      </if>
      <if test="clType != null">
        cl_type,
      </if>
      <if test="clTotalAmount != null">
        cl_total_amount,
      </if>
      <if test="clIcCardNo != null">
        cl_ic_card_no,
      </if>
      <if test="clIcCardAddr != null">
        cl_ic_card_addr,
      </if>
      <if test="clRemainMoney != null">
        cl_remain_money,
      </if>
      <if test="clThisAmount != null">
        cl_this_amount,
      </if>
      <if test="clThisMoney != null">
        cl_this_money,
      </if>
      <if test="clThisTime != null">
        cl_this_time,
      </if>
      <if test="clOpenDt != null">
        cl_open_dt,
      </if>
      <if test="closeDt != null">
        close_dt,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="lastHistoryId != null">
        #{lastHistoryId,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.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    update rm_open_close_valve_last
    <set>
      <if test="lastHistoryId != null">
        last_history_id = #{lastHistoryId,jdbcType=BIGINT},
      </if>
      <if test="controllerId != null">
        controller_id = #{controllerId,jdbcType=BIGINT},
      </if>
      <if test="intakeId != null">
        intake_id = #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="rtuAddr != null">
        rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      </if>
      <if test="opDt != null">
        op_dt = #{opDt,jdbcType=DATE},
      </if>
      <if test="opType != null">
        op_type = #{opType,jdbcType=TINYINT},
      </if>
      <if test="opTotalAmount != null">
        op_total_amount = #{opTotalAmount,jdbcType=DOUBLE},
      </if>
      <if test="opIcCardNo != null">
        op_ic_card_no = #{opIcCardNo,jdbcType=VARCHAR},
      </if>
      <if test="opIcCardAddr != null">
        op_ic_card_addr = #{opIcCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="opRemainMoney != null">
        op_remain_money = #{opRemainMoney,jdbcType=DOUBLE},
      </if>
      <if test="openDt != null">
        open_dt = #{openDt,jdbcType=DATE},
      </if>
      <if test="clDt != null">
        cl_dt = #{clDt,jdbcType=DATE},
      </if>
      <if test="clType != null">
        cl_type = #{clType,jdbcType=TINYINT},
      </if>
      <if test="clTotalAmount != null">
        cl_total_amount = #{clTotalAmount,jdbcType=DOUBLE},
      </if>
      <if test="clIcCardNo != null">
        cl_ic_card_no = #{clIcCardNo,jdbcType=VARCHAR},
      </if>
      <if test="clIcCardAddr != null">
        cl_ic_card_addr = #{clIcCardAddr,jdbcType=VARCHAR},
      </if>
      <if test="clRemainMoney != null">
        cl_remain_money = #{clRemainMoney,jdbcType=DOUBLE},
      </if>
      <if test="clThisAmount != null">
        cl_this_amount = #{clThisAmount,jdbcType=DOUBLE},
      </if>
      <if test="clThisMoney != null">
        cl_this_money = #{clThisMoney,jdbcType=DOUBLE},
      </if>
      <if test="clThisTime != null">
        cl_this_time = #{clThisTime,jdbcType=INTEGER},
      </if>
      <if test="clOpenDt != null">
        cl_open_dt = #{clOpenDt,jdbcType=DATE},
      </if>
      <if test="closeDt != null">
        close_dt = #{closeDt,jdbcType=DATE},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast">
    <!--@mbg.generated-->
    update rm_open_close_valve_last
    set last_history_id = #{lastHistoryId,jdbcType=BIGINT},
      controller_id = #{controllerId,jdbcType=BIGINT},
      intake_id = #{intakeId,jdbcType=BIGINT},
      rtu_addr = #{rtuAddr,jdbcType=VARCHAR},
      op_dt = #{opDt,jdbcType=DATE},
      op_type = #{opType,jdbcType=TINYINT},
      op_total_amount = #{opTotalAmount,jdbcType=DOUBLE},
      op_ic_card_no = #{opIcCardNo,jdbcType=VARCHAR},
      op_ic_card_addr = #{opIcCardAddr,jdbcType=VARCHAR},
      op_remain_money = #{opRemainMoney,jdbcType=DOUBLE},
      open_dt = #{openDt,jdbcType=DATE},
      cl_dt = #{clDt,jdbcType=DATE},
      cl_type = #{clType,jdbcType=TINYINT},
      cl_total_amount = #{clTotalAmount,jdbcType=DOUBLE},
      cl_ic_card_no = #{clIcCardNo,jdbcType=VARCHAR},
      cl_ic_card_addr = #{clIcCardAddr,jdbcType=VARCHAR},
      cl_remain_money = #{clRemainMoney,jdbcType=DOUBLE},
      cl_this_amount = #{clThisAmount,jdbcType=DOUBLE},
      cl_this_money = #{clThisMoney,jdbcType=DOUBLE},
      cl_this_time = #{clThisTime,jdbcType=INTEGER},
      cl_open_dt = #{clOpenDt,jdbcType=DATE},
      close_dt = #{closeDt,jdbcType=DATE}
    where id = #{id,jdbcType=BIGINT}
  </update>
</mapper>
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveReportMapper.xml
File was deleted
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java
@@ -3,17 +3,11 @@
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.daoRm.*;
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 com.dy.pipIrrGlobal.pojoRm.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
@@ -41,11 +35,20 @@
    private RmAutoReportLastMapper rmAutoReportLastMapperDao ;//控制器最新上报数据DAO
    @Autowired
    private RmAutoReportHistoryMapper rmAutoReportHistoryMapperDao ;//控制器历史上报数据DAO
    @Autowired
    private RmOpenCloseValveLastMapper rmOpenCloseValveLastMapperDao ;//控制器最新开关阀上报数据DAO
    @Autowired
    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapperDao ;//控制器历史开关阀上报数据DAO
    //@Autowired
    //@Lazy
    //private DbSv sv ;
    /////////////////////////////////////////////////
    //
    // 基础功能
    //
    ////////////////////////////////////////////////
    /**
     * 通过控制器地址从数据库表中查询控制器
     * @param rtuAddr 控制器地址
@@ -78,12 +81,19 @@
    public void savePrConctrollerTramp(PrControllerTramp po){
        this.prControllerTrampMapperDao.insert(po) ;
    }
    /////////////////////////////////////////////////
    //
    // 报警及状态功能
    //
    ////////////////////////////////////////////////
    /**
     * 得到控制器报警与状态最新记录
     * @param rtuAddr
     * @return
     */
    public RmAlarmStateLast getRmLastAlarmState(String rtuAddr){
    public RmAlarmStateLast getRmAlarmStateLast(String rtuAddr){
        List<RmAlarmStateLast> list = rmAlarmStateLastMapperDao.selectByRtuAddr(rtuAddr) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
@@ -106,12 +116,20 @@
    public void saveRmAlarmStateHistory(RmAlarmStateHistory po){
        this.rmAlarmStateHistoryMapperDao.insert(po) ;
    }
    /////////////////////////////////////////////////
    //
    // 主动上报数据功能
    //
    ////////////////////////////////////////////////
    /**
     * 得到控制器上报数据最新记录
     * @param rtuAddr
     * @return
     */
    public RmAutoReportLast getRmLastAutoReport(String rtuAddr){
    public RmAutoReportLast getRmAutoReportLast(String rtuAddr){
        List<RmAutoReportLast> list = rmAutoReportLastMapperDao.selectByRtuAddr(rtuAddr) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
@@ -127,6 +145,14 @@
        this.rmAutoReportLastMapperDao.insert(po) ;
    }
    /**
     * 保存控制器上报数据最新记录
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmAutoReportLast(RmAutoReportLast po){
        this.rmAutoReportLastMapperDao.updateByPrimaryKeySelective(po) ;
    }
    /**
     * 保存控制器上报数据历史记录
     * @param po
     */
@@ -135,4 +161,67 @@
        this.rmAutoReportHistoryMapperDao.insert(po) ;
    }
    /////////////////////////////////////////////////
    //
    // 开关阀上报数据功能
    //
    ////////////////////////////////////////////////
    /**
     * 得到控制器开关阀上报数据最新记录
     * @param rtuAddr
     * @return
     */
    public RmOpenCloseValveLast getRmOpenCloseValveLast(String rtuAddr){
        List<RmOpenCloseValveLast> list = rmOpenCloseValveLastMapperDao.selectByRtuAddr(rtuAddr) ;
        if(list != null && list.size() > 0){
            return list.get(0) ;
        }
        return null ;
    }
    /**
     * 保存控制器开关阀上报数据最新记录
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmOpenCloseValveLast(RmOpenCloseValveLast po){
        this.rmOpenCloseValveLastMapperDao.insert(po) ;
    }
    /**
     * 保存控制器开关阀上报数据最新记录
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmOpenCloseValveLast(RmOpenCloseValveLast po){
        this.rmOpenCloseValveLastMapperDao.updateByPrimaryKeySelective(po) ;
    }
    /**
     * 得到控制器开关阀上报数据历史数据中的最新记录
     * @param id
     * @return
     */
    public RmOpenCloseValveHistory getRmOpenCloseValveHistory(Long id){
        return rmOpenCloseValveHistoryMapperDao.selectByPrimaryKey(id) ;
    }
    /**
     * 保存控制器开关阀上报数据历史记录
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void saveRmOpenCloseValveHistory(RmOpenCloseValveHistory po){
        this.rmOpenCloseValveHistoryMapperDao.insert(po) ;
    }
    /**
     * 保存控制器开关阀上报数据历史记录
     * @param po
     */
    @Transactional(rollbackFor = Exception.class)
    public void updateRmOpenCloseValveHistory(RmOpenCloseValveHistory po){
        this.rmOpenCloseValveHistoryMapperDao.updateByPrimaryKeySelective(po) ;
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAlarmStatus.java
@@ -13,8 +13,6 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Date;
/**
 * @Author liurunyu
 * @Date 2024/1/15 21:59
@@ -73,7 +71,7 @@
     * @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) ;
        RmAlarmStateLast po = sv.getRmAlarmStateLast(rtuAddr) ;
        if(po == null){
            po = new RmAlarmStateLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                    rtuAddr,
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java
@@ -56,7 +56,7 @@
     * @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) ;
        RmAutoReportLast po = sv.getRmAutoReportLast(rtuAddr) ;
        if(po == null){
            po = new RmAutoReportLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getId(),
                    rtuAddr,
@@ -67,7 +67,7 @@
            sv.saveRmAutoReportLast(po) ;
        }else{
            po = this.update(po, dV1_0_1, dataCdC0Vo) ;
            sv.saveRmAutoReportLast(po);
            sv.updateRmAutoReportLast(po);
        }
    }
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealCloseValveReport.java
@@ -2,7 +2,13 @@
import com.dy.aceMw.server.rtuData.TaskSurpport;
import com.dy.aceMw.server.rtuData.dbSv.DbSv;
import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V1_0_0.DataCd83CloseVo;
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.RmOpenCloseValveHistory;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -28,9 +34,215 @@
     */
    @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.dataCd83CloseVo != null) {
        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
        DbSv sv = (DbSv)objs[0] ;
        PrControllerTramp rtuTramp = (PrControllerTramp)objs[2] ;
        sv.savePrConctrollerTramp(rtuTramp);
                PrController controller = (PrController)objs[1] ;
                try{
                    this.dealSave(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd83CloseVo) ;
                }catch (Exception e){
                    log.error("保存控制器关阀上报时发生异常", e);
                }
            }
        }
    }
    /**
     * 保存数据
     * @param sv 服务
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param dV1_0_1 上报数据
     * @param dataCd83CloseVo 关阀上报数据对象
     */
    private void dealSave(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo) throws Exception {
        RmOpenCloseValveLast poLast = sv.getRmOpenCloseValveLast(rtuAddr) ;
        if(poLast == null){
            //首先生成最新数据及历史数据,并先保存历史数据
            poLast = this.newRmOpenCloseValveLast(controller, rtuAddr, dV1_0_1, dataCd83CloseVo);
            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
            //保存最新数据
            sv.saveRmOpenCloseValveLast(poLast);
        }else{
            //if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt).equals(poLast.closeDt)){
            //    //时间一致,重复上报数据,不进行任何处理
            //}else{
                if(poLast.clType == null){
                    //原记录不存在关阀数据,所以当前关阀上报是新的一次关阀,保留原记录开阀数据
                    this.updateCloseValve(poLast, null, dV1_0_1, dataCd83CloseVo, false) ;
                    if(poLast.opType == null){
                        //原记录中不存在开阀数据,没办进行匹配
                        //生成并保存新的关阀上报历史数据记录
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                    }else{
                        //原记录中存在开阀数据,进行历史数据匹配
                        RmOpenCloseValveHistory poHistory = null ;
                        if(poLast.lastHistoryId != null){
                            poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
                            if(poHistory != null){
                                sv.updateRmOpenCloseValveHistory(poHistory);
                            }else{
                                //没有历史数据,生成并保存新的关阀上报历史数据记录
                                this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                            }
                        }else{
                            //没有历史数据,生成并保存新的关阀上报历史数据记录
                            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                        }
                    }
                }else if(poLast.opType != null){
                    //原记录存在关阀数据,也存在开阀数据,首先进行开关阀时间对比
                    if(poLast.closeDt != null && poLast.closeDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt))){
                        //补报的许久之前的数据,不进行处理
                    }else if(poLast.closeDt != null && poLast.closeDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt))){
                        //重复上报了,不进行处理
                    }else {
                        //当前上报的关阀数据晚于原来的关阀数据,是新的上报关阀数据
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                    }
                }else{
                    //if(po.opType == null)
                    //原记录不存在开阀数据也不存在关阀数据,这种情况不存在,但为安全也进行处理
                    this.updateCloseValve(poLast, null, dV1_0_1, dataCd83CloseVo, false) ;
                    //生成并保存新的关阀上报历史数据记录
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83CloseVo, poLast);
                }
                sv.updateRmOpenCloseValveLast(poLast);
            //}
        }
    }
    /**
     * 保存新的关阀上报历史数据记录,并把ID赋值给最新记录的 lastHistoryId
     * @param sv
     * @param controller
     * @param rtuAddr
     * @param dV1_0_1
     * @param dataCd83CloseVo
     * @param poLast
     * @throws Exception
     */
    private void newHistoryDataDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo, RmOpenCloseValveLast poLast)throws Exception {
        RmOpenCloseValveHistory poHistory = this.newRmOpenCloseValveHistory(controller, rtuAddr, dV1_0_1, dataCd83CloseVo) ;
        sv.saveRmOpenCloseValveHistory(poHistory);
        //由最新数据持有历史数据中的最新记录ID,以方便快速查询
        poLast.lastHistoryId = poHistory == null ? null: poHistory.id ;
    }
    /**
     * 生成新的关阀上报最新数据记录
     * @param controller
     * @param rtuAddr
     * @param dV1_0_1
     * @param dataCd83CloseVo
     * @return
     * @throws Exception
     */
    private RmOpenCloseValveLast newRmOpenCloseValveLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo)throws Exception {
        RmOpenCloseValveLast po = new RmOpenCloseValveLast(null, null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                null, null, null, null, null, null,null,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                dataCd83CloseVo.type,
                dataCd83CloseVo.totalAmount,
                dataCd83CloseVo.icCardNo,
                dataCd83CloseVo.icCardAddr,
                dataCd83CloseVo.remainMoney,
                dataCd83CloseVo.thisAmount,
                dataCd83CloseVo.thisMoney,
                dataCd83CloseVo.thisTime,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.openDt),
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt)) ;
        return po ;
    }
    /**
     * 生成新的关阀上报历史数据记录
     * @param controller
     * @param rtuAddr
     * @param dV1_0_1
     * @param dataCd83CloseVo
     * @return
     * @throws Exception
     */
    private RmOpenCloseValveHistory newRmOpenCloseValveHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo)throws Exception {
        RmOpenCloseValveHistory po = new RmOpenCloseValveHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                null, null, null, null, null, null,null,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                dataCd83CloseVo.type,
                dataCd83CloseVo.totalAmount,
                dataCd83CloseVo.icCardNo,
                dataCd83CloseVo.icCardAddr,
                dataCd83CloseVo.remainMoney,
                dataCd83CloseVo.thisAmount,
                dataCd83CloseVo.thisMoney,
                dataCd83CloseVo.thisTime,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.openDt),
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt)) ;
        return po ;
    }
    /**
     * 更新数据
     * @param poLast
     * @param poHistory
     * @param dV1_0_1
     * @param dataCd83CloseVo
     * @param clearOpenValve
     * @throws Exception
     */
    private void updateCloseValve(RmOpenCloseValveLast poLast, RmOpenCloseValveHistory poHistory, DataV1_0_1 dV1_0_1, DataCd83CloseVo dataCd83CloseVo, boolean clearOpenValve) throws Exception {
        poLast.clDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
        poLast.clType = dataCd83CloseVo.type;
        poLast.clTotalAmount = dataCd83CloseVo.totalAmount;
        poLast.clIcCardNo = dataCd83CloseVo.icCardNo;
        poLast.clIcCardAddr = dataCd83CloseVo.icCardAddr;
        poLast.clRemainMoney = dataCd83CloseVo.remainMoney;
        poLast.clThisAmount = dataCd83CloseVo.thisAmount;
        poLast.clThisMoney = dataCd83CloseVo.thisMoney;
        poLast.clThisTime = dataCd83CloseVo.thisTime;
        poLast.clOpenDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.openDt);
        poLast.closeDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83CloseVo.closeDt) ;
        if(poHistory != null){
            poHistory.clDt = poLast.clDt;
            poHistory.clType = dataCd83CloseVo.type;
            poHistory.clTotalAmount = dataCd83CloseVo.totalAmount;
            poHistory.clIcCardNo = dataCd83CloseVo.icCardNo;
            poHistory.clIcCardAddr = dataCd83CloseVo.icCardAddr;
            poHistory.clRemainMoney = dataCd83CloseVo.remainMoney;
            poHistory.clThisAmount = dataCd83CloseVo.thisAmount;
            poHistory.clThisMoney = dataCd83CloseVo.thisMoney;
            poHistory.clThisTime = dataCd83CloseVo.thisTime;
            poHistory.clOpenDt = poLast.clOpenDt;
            poHistory.closeDt = poLast.closeDt ;
        }
        if(clearOpenValve){
            poLast.opDt = null ;
            poLast.opType = null ;
            poLast.opTotalAmount = null ;
            poLast.opIcCardNo = null ;
            poLast.opIcCardAddr = null ;
            poLast.opRemainMoney = null ;
            poLast.openDt = null ;
            if(poHistory != null) {
                poHistory.opDt = null ;
                poHistory.opType = null ;
                poHistory.opTotalAmount = null ;
                poHistory.opIcCardNo = null ;
                poHistory.opIcCardAddr = null ;
                poHistory.opRemainMoney = null ;
                poHistory.openDt = null ;
            }
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealControllerNoTramp.java
New file
@@ -0,0 +1,30 @@
package com.dy.aceMw.server.rtuData.p206V1_0_0;
import com.dy.aceMw.server.rtuData.TaskSurpport;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
 * @Author liurunyu
 * @Date 2024/2/22 16:56
 * @LastEditTime 2024/2/22 16:56
 * @Description
 * 处理非流浪控制器,此任务无具体业务逻辑,只是在任务xml配置文件中,框住其子任务节点
 */
public class TkDealControllerNoTramp extends TaskSurpport {
    private static final Logger log = LogManager.getLogger(TkDealControllerNoTramp.class.getName()) ;
    //类ID,一定与Tree.xml配置文件中配置一致
    public static final String taskId = "TkDealControllerNoTramp" ;
    /**
     * 执行节点任务
     * @param data 需要处理的数据
     */
    @Override
    public void execute(Object data) {
        //此任务无具体业务逻辑,只是在任务xml配置文件中,框住其子任务节点
        this.toNextTasks(data);
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java
@@ -30,8 +30,10 @@
    @Override
    public void execute(Object data) {
        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
        PrControllerTramp tramp = (PrControllerTramp)objs[2] ;
        if(tramp != null){
        DbSv sv = (DbSv)objs[0] ;
        PrControllerTramp rtuTramp = (PrControllerTramp)objs[2] ;
        sv.savePrConctrollerTramp(rtuTramp);
            sv.savePrConctrollerTramp(tramp);
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealOpenValveReport.java
@@ -3,8 +3,12 @@
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.DataCd83OpenVo;
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.RmOpenCloseValveHistory;
import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -13,8 +17,6 @@
 * @Date 2024/1/16 17:16
 * @LastEditTime 2024/1/16 17:16
 * @Description
 */
/**
 * 处理控制器开阀上报
 */
public class TkDealOpenValveReport extends TaskSurpport {
@@ -39,12 +41,207 @@
                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) ;
                    this.dealSave(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd83OpenVo) ;
                }catch (Exception e){
                    log.error("保存控制器开阀上报时发生异常", e);
                }
            }
        }
    }
    /**
     * 保存数据
     * @param sv 服务
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param dV1_0_1 上报数据
     * @param dataCd83OpenVo 开阀上报数据对象
     */
    private void dealSave(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo) throws Exception {
        RmOpenCloseValveLast poLast = sv.getRmOpenCloseValveLast(rtuAddr) ;
        if(poLast == null){
            //首先生成历史数据,并保存
            poLast = this.newRmOpenCloseValveLast(controller, rtuAddr, dV1_0_1, dataCd83OpenVo);
            this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
            sv.saveRmOpenCloseValveLast(poLast);
        }else{
            if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt).equals(poLast.openDt)){
                //时间一致,重复上报数据,不进行任何处理
            }else{
                if(poLast.opType != null){
                    //原记录存在开阀数据,首先进行时间对比
                    if(poLast.openDt != null && poLast.openDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                        //补报的许久之前的开阀数据,不进行处理
                    }else if(poLast.openDt != null && poLast.openDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                        //重复上报的开阀数据,不进行处理
                    }else{
                        //当前开阀上报是新的一次开阀,不管原记录是否存在关阀数据,一律清空关阀数据
                        this.updateOpenValve(poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                        //生成并保存新的开阀上报历史数据记录
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
                    }
                }else if(poLast.clType != null){
                    //原记录不存在开阀数据,但存在关阀数据,首先进行时间比对
                    if(poLast.closeDt != null && poLast.closeDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                        //当前上报是补报的开阀数据
                        RmOpenCloseValveHistory poHistory = null ;
                        if(poLast.lastHistoryId != null){
                            poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
                        }
                        this.updateOpenValve(poLast, poHistory, dV1_0_1, dataCd83OpenVo, false) ;
                        if(poHistory != null){
                            sv.updateRmOpenCloseValveHistory(poHistory);
                        }
                    }else if(poLast.closeDt != null && poLast.closeDt.before(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt))){
                        //当前上报是新的开阀数据
                        this.updateOpenValve(poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                        //生成并保存新的开阀上报历史数据记录
                        this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
                    }else {
                        //当前上报的开阀数据与原来的关阀数据同一时间,这种情况应该不存在,但也处理
                        RmOpenCloseValveHistory poHistory = null ;
                        if(poLast.lastHistoryId != null){
                            poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ;
                        }
                        this.updateOpenValve(poLast, poHistory, dV1_0_1, dataCd83OpenVo, false) ;
                        if(poHistory != null){
                            sv.updateRmOpenCloseValveHistory(poHistory);
                        }
                    }
                }else{
                    //if(po.clType == null)
                    //原记录不存在开阀数据也不存在关阀数据,这种情况不存在,但为安全也进行处理
                    this.updateOpenValve(poLast, null, dV1_0_1, dataCd83OpenVo, true) ;
                    //生成并保存新的开阀上报历史数据记录
                    this.newHistoryDataDeal(sv, controller, rtuAddr, dV1_0_1, dataCd83OpenVo, poLast);
                }
                sv.updateRmOpenCloseValveLast(poLast);
            }
        }
    }
    /**
     * 保存新的开阀上报历史数据记录,并把ID赋值给最新记录的 lastHistoryId
     * @param sv
     * @param controller
     * @param rtuAddr
     * @param dV1_0_1
     * @param dataCd83OpenVo
     * @param poLast
     * @throws Exception
     */
    private void newHistoryDataDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, RmOpenCloseValveLast poLast)throws Exception {
        RmOpenCloseValveHistory poHistory = this.newRmOpenCloseValveHistory(controller, rtuAddr, dV1_0_1, dataCd83OpenVo) ;
        sv.saveRmOpenCloseValveHistory(poHistory);
        //由最新数据持有历史数据中的最新记录ID,以方便快速查询
        poLast.lastHistoryId = poHistory == null ? null: poHistory.id ;
    }
    /**
     * 生成新的开阀上报最新数据记录
     * @param controller
     * @param rtuAddr
     * @param dV1_0_1
     * @param dataCd83OpenVo
     * @return
     * @throws Exception
     */
    private RmOpenCloseValveLast newRmOpenCloseValveLast(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo)throws Exception {
        RmOpenCloseValveLast po = new RmOpenCloseValveLast(null, null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                dataCd83OpenVo.type,
                dataCd83OpenVo.totalAmount,
                dataCd83OpenVo.icCardNo,
                dataCd83OpenVo.icCardAddr,
                dataCd83OpenVo.remainMoney,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt),
                null, null, null, null, null, null, null, null, null, null, null) ;
        return po ;
    }
    /**
     * 生成新的开阀上报历史数据记录
     * @param controller
     * @param rtuAddr
     * @param dV1_0_1
     * @param dataCd83OpenVo
     * @return
     * @throws Exception
     */
    private RmOpenCloseValveHistory newRmOpenCloseValveHistory(PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo)throws Exception {
        RmOpenCloseValveHistory po = new RmOpenCloseValveHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
                rtuAddr,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
                dataCd83OpenVo.type,
                dataCd83OpenVo.totalAmount,
                dataCd83OpenVo.icCardNo,
                dataCd83OpenVo.icCardAddr,
                dataCd83OpenVo.remainMoney,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt),
                null, null, null, null, null, null, null, null, null, null, null) ;
        return po ;
    }
    /**
     * 更新数据
     * @param poLast
     * @param poHistory
     * @param dV1_0_1
     * @param dataCd83OpenVo
     * @param clearCloseValve
     * @throws Exception
     */
    private void updateOpenValve(RmOpenCloseValveLast poLast, RmOpenCloseValveHistory poHistory, DataV1_0_1 dV1_0_1, DataCd83OpenVo dataCd83OpenVo, boolean clearCloseValve) throws Exception {
        poLast.opDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt);
        poLast.opType = dataCd83OpenVo.type ;
        poLast.opTotalAmount = dataCd83OpenVo.totalAmount ;
        poLast.opIcCardNo = dataCd83OpenVo.icCardNo ;
        poLast.opIcCardAddr = dataCd83OpenVo.icCardAddr ;
        poLast.opRemainMoney = dataCd83OpenVo.remainMoney ;
        poLast.openDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd83OpenVo.openDt) ;
        if(poHistory != null){
            poHistory.opDt = poLast.opDt;
            poHistory.opType = dataCd83OpenVo.type ;
            poHistory.opTotalAmount = dataCd83OpenVo.totalAmount ;
            poHistory.opIcCardNo = dataCd83OpenVo.icCardNo ;
            poHistory.opIcCardAddr = dataCd83OpenVo.icCardAddr ;
            poHistory.opRemainMoney = dataCd83OpenVo.remainMoney ;
            poHistory.openDt = poLast.openDt ;
        }
        if(clearCloseValve){
            poLast.clDt = null ;
            poLast.clType = null ;
            poLast.clTotalAmount = null ;
            poLast.clIcCardNo = null ;
            poLast.clIcCardAddr = null ;
            poLast.clRemainMoney = null ;
            poLast.clThisAmount = null ;
            poLast.clThisMoney = null ;
            poLast.clThisTime = null ;
            poLast.clOpenDt = null ;
            poLast.closeDt = null ;
            if(poHistory != null) {
                poHistory.clDt = null;
                poHistory.clType = null;
                poHistory.clTotalAmount = null;
                poHistory.clIcCardNo = null;
                poHistory.clIcCardAddr = null;
                poHistory.clRemainMoney = null;
                poHistory.clThisAmount = null;
                poHistory.clThisMoney = null;
                poHistory.clThisTime = null;
                poHistory.clOpenDt = null;
                poHistory.closeDt = null;
            }
        }
    }
}
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
@@ -33,18 +33,19 @@
        DbSv sv = (DbSv)SpringContextUtil.getBean(DbSv.class) ;
        if(sv != null){
            PrController controller = sv.getControllersByRtuAddrAndIntakeNotNull(rtuAddr) ;
            PrControllerTramp controllerTramp = null ;
            if(controller == null){
                //数据库中未查询(已经绑定且控制器地址相符)到控制器(RTU实体)
                //流浪者控制器
                PrControllerTramp rtuTramp = sv.getPrControllerTrampByRtuAddr(rtuAddr);
                if(rtuTramp == null){
                    rtuTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), new Date()) ;
                    this.taskResult = new Object[]{sv, null, rtuTramp} ;
                    this.toNextOneTask(data, TkDealControllerTramp.taskId);
                controllerTramp = sv.getPrControllerTrampByRtuAddr(rtuAddr);
                if(controllerTramp == null){
                    controllerTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), new Date()) ;
                    //this.taskResult = new Object[]{sv, null, rtuTramp} ;
                    //this.toNextOneTask(data, TkDealControllerTramp.taskId);
                }
            }
            //不论是否为流浪控制器(RTU实体),都要进行下步工作
            this.taskResult = new Object[]{sv, controller, null} ;
            //不论是否为流浪控制器(RTU实体),都要进行下步工作,记录其上报的一些数据,当绑定控制器后,数据自动有了归属
            this.taskResult = new Object[]{sv, controller, controllerTramp} ;
            this.toNextTasks(data);
        }else{
            log.error("严重错误,未能得到DbSv对象");
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
@@ -12,6 +12,7 @@
                    <!-- 处理流浪控制器 -->
                    <task id="TkDealControllerTramp" name="处理流浪控制器" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealControllerTramp" />
                    <!-- 非流浪者RTU,必须放在TkDealControllerTramp后面 -->
                    <task id="TkDealControllerNoTramp" name="非流浪者RTU" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealControllerNoTramp">
                    <!-- 识别主动上报数据 -->
                    <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" />
@@ -28,4 +29,5 @@
            </task>
        </task>
    </task>
    </task>
</project>
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/Tree_.xml
@@ -10,9 +10,9 @@
        <task id="TkFindP206V1_0_0" name="识别P206V1_0_0数据" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindP206V1_0_0">
            <task id="TkPreGenObjs" name="预先准备各对象" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkPreGenObjs">
                <!-- 识别流浪者RTU,数据库中没有或数据库存在但未分配置供水机构 -->
                <task id="TkDealRtuTramp" name="识别流浪者RTU" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealRtuTramp" />
                <task id="TkDealControllerTramp" name="识别流浪者RTU" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealControllerTramp" />
                <!-- 非流浪者RTU,必须放在TkDealRtuTramp后面 -->
                <task id="TkDealNoRtuTramp" name="非流浪者RTU" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealNoRtuTramp">
                <task id="TkDealControllerNoTramp" name="非流浪者RTU" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealControllerNoTramp">
                    <!-- 识别主动上报数据 -->
                    <task id="TkFindAutoReport" name="识别主动上报及触发上报数据" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindAutoReport">
                        <!-- 检查时间等不正确的上报数据 -->
@@ -60,36 +60,7 @@
                </task>
            </task>
        </task>
        <task id="TkFindHAC_NBhV2_5" name="识别HAC_NBhV2_5数据" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkFindHAC_NBhV2_5">
            <task id="TkPipPreGenObjs" name="预先准备各对象" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipPreGenObjs">
                <!-- 识别流浪者管网水表,数据库中没有或数据库存在但未分配置供水机构 -->
                <task id="TkPipDealRtuTramp" name="识别流浪者管网水表" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipDealRtuTramp" />
                <!-- 非流浪者管网水表,必须放在TkDealRtuTramp后面 -->
                <task id="TkPipDealNoRtuTramp" name="非流浪者管网水表" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipDealNoRtuTramp">
                    <!-- 识别主动上报数据 -->
                    <task id="TkPipFindAutoReport" name="识别主动上报及触发上报数据" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.TkPipFindAutoReport">
                        <!-- 检查时间等不正确的上报数据 -->
                        <task id="TkPipCheckAutoReport" name="检查时间等不正确的上报数据" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipCheckAutoReport">
                            <task id="TkPipCheckRepeatAutoReport" name="检查重复上报数据" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipCheckRepeatAutoReport">
                                <!-- Mn运维系统 -->
                                <task id="TkPipMnRtuDealAutoReportLastAlarm" name="运维管网水表上报最新报警" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipMnRtuDealAutoReportLastAlarm" />
                                <!-- RTU主动上报数据必须在RTU主动上报报警任务的下面,以备主动上报数据中记录是否有报警-->
                                <task id="TkPipMnRtuDealAutoReportLastData" name="运维管网水表主动上报最新数据" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipMnRtuDealAutoReportLastData" />
                                <!-- Org供水机构系统 -->
                                <task id="TkPipOrgRtuDealAutoReportLastAlarm" name="供水机构管网水表主动上报最新报警" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportLastAlarm">
                                    <task id="TkPipOrgRtuDealAutoReportAlarm" name="供水机构管网水表主动上报报警" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportAlarm" />
                                </task>
                                <!-- RTU主动上报数据必须在RTU主动上报报警任务的下面,以备主动上报数据中记录是否有报警-->
                                <task id="TkPipOrgRtuDealAutoReportLastData" name="供水机构管网水表主动上报最新数据" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportLastData">
                                    <task id="TkPipOrgRtuDealAutoReportData" name="供水机构管网水表主动上报数据" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAutoReportData" />
                                    <task id="TkPipOrgRtuDealAmount" name="供水机构管网水表月流量统计" enable="true" class="com.dy.busi.server.rtuData.HAC_NBhV2_5.autoReport.TkPipOrgRtuDealAmount" />
                                </task>
                            </task>
                        </task>
                    </task>
                </task>
            </task>
        </task>
    </task>
</task>
</project>