Administrator
2024-01-17 621168af972b38fb8b3753b6ce6cb617d1396468
Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
8个文件已添加
11个文件已修改
1057 ■■■■■ 已修改文件
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/pojoRm/RmAlarmStateHistory.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java 6 ●●●● 补丁 | 查看 | 原始文档 | 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 50 ●●●●● 补丁 | 查看 | 原始文档 | 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/p206V1_0_0/TkDealAlarmStatus.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java 18 ●●●● 补丁 | 查看 | 原始文档 | 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/TkPreGenObjs.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/文档/取水口控制器及测控数据关系.docx 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/文档/取水口控制器及测控数据关系.vsd 补丁 | 查看 | 原始文档 | blame | 历史
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/pojoRm/RmAlarmStateHistory.java
@@ -16,11 +16,8 @@
 * @Author liurunyu
 * @Date 2024/1/16 11:03
 * @LastEditTime 2024/1/16 11:03
 * @Description
 * @Description æŽ§åˆ¶å™¨æŠ¥è­¦ä¸ŽçŠ¶æ€ï¼ˆåŽ†å²ï¼‰
 */   
/**
* æŽ§åˆ¶å™¨æŠ¥è­¦ä¸ŽçŠ¶æ€ï¼ˆåŽ†å²ï¼‰
*/
@TableName(value="rm_alarm_state_history", autoResultMap = true)
@Data
@Builder
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAlarmStateLast.java
@@ -16,11 +16,8 @@
 * @Author liurunyu
 * @Date 2024/1/16 10:39
 * @LastEditTime 2024/1/16 10:39
 * @Description
 * @Description æŽ§åˆ¶å™¨æŠ¥è­¦ä¸ŽçŠ¶æ€ï¼ˆæœ€æ–°ï¼‰
 */   
/**
* æŽ§åˆ¶å™¨æŠ¥è­¦ä¸ŽçŠ¶æ€ï¼ˆæœ€æ–°ï¼‰
*/
@TableName(value="rm_alarm_state_last", autoResultMap = true)
@Data
@Builder
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportHistory.java
@@ -16,11 +16,8 @@
 * @Author liurunyu
 * @Date 2024/1/16 14:59
 * @LastEditTime 2024/1/16 14:59
 * @Description
 * @Description ç»ˆç«¯è‡ªæŠ¥ï¼ˆæœ€æ–°ï¼‰
 */   
/**
* ç»ˆç«¯è‡ªæŠ¥ï¼ˆæœ€æ–°ï¼‰
*/
@TableName(value="rm_alarm_state_history", autoResultMap = true)
@Data
@Builder
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoRm/RmAutoReportLast.java
@@ -16,12 +16,8 @@
 * @Author liurunyu
 * @Date 2024/1/16 14:45
 * @LastEditTime 2024/1/16 14:45
 * @Description
 * @Description ç»ˆç«¯è‡ªæŠ¥ï¼ˆæœ€æ–°ï¼‰
 */   
/**
* ç»ˆç«¯è‡ªæŠ¥ï¼ˆæœ€æ–°ï¼‰
*/
@TableName(value="rm_alarm_state_last", autoResultMap = true)
@Data
@Builder
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 {
    /**
@@ -49,4 +51,52 @@
        }
        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/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/p206V1_0_0/TkDealAlarmStatus.java
@@ -6,6 +6,7 @@
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;
@@ -39,22 +40,26 @@
            DataV1_0_1 dV1_0_1 = (DataV1_0_1)subD ;
            if(dV1_0_1 != null){
                //dV1_0_1.dataCd81Vo ä¸Ž dV1_0_1.dataCdC0Vo ä¸ä¼šåŒæ—¶æœ‰å€¼
                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.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ;
                        this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCd81Vo.alarmVo, dV1_0_1.dataCd81Vo.stateVo) ;
                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) ;
                        }
                    }
                } 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.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ;
                        this.saveHistory(sv, controller, d.getRtuAddr(), dV1_0_1.dataCdC0Vo.alarmVo, dV1_0_1.dataCdC0Vo.stateVo) ;
                    }
                }catch (Exception e){
                    log.error("保存控制器报警和状态数据时发生异常", e);
                }
            }
        }
@@ -67,17 +72,17 @@
     * @param alarmVo æŠ¥è­¦å¯¹è±¡
     * @param stateVo çŠ¶æ€å¯¹è±¡
     */
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataAlarmVo alarmVo, DataStateVo 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,
                    new Date(),
                    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, alarmVo, stateVo) ;
            po = this.update(controller, po, dV1_0_1, alarmVo, stateVo) ;
            sv.saveRmAlarmStateLast(po);
        }
    }
@@ -90,20 +95,20 @@
     * @param alarmVo æŠ¥è­¦å¯¹è±¡
     * @param stateVo çŠ¶æ€å¯¹è±¡
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataAlarmVo alarmVo, DataStateVo 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,
                new Date(),
                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, DataAlarmVo alarmVo, DataStateVo stateVo){
    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 = new Date() ;
        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 ;
pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealAutoReport.java
@@ -42,8 +42,8 @@
                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.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);
                }
@@ -57,18 +57,18 @@
     * @param rtuAddr æŽ§åˆ¶å™¨åœ°å€
     * @param dataCdC0Vo è‡ªæŠ¥æ•°æ®å¯¹è±¡
     */
    private void saveOrUpdateLast(DbSv sv, PrController controller, String rtuAddr, DataCdC0Vo dataCdC0Vo) throws Exception {
    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,
                    new Date(),
                    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, dataCdC0Vo) ;
            po = this.update(po, dV1_0_1, dataCdC0Vo) ;
            sv.saveRmAutoReportLast(po);
        }
    }
@@ -80,10 +80,10 @@
     * @param rtuAddr æŽ§åˆ¶å™¨åœ°å€
     * @param dataCdC0Vo è‡ªæŠ¥æ•°æ®å¯¹è±¡
     */
    private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataCdC0Vo dataCdC0Vo) throws Exception {
    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,
                new Date(),
                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) ;
@@ -91,8 +91,8 @@
    }
    private RmAutoReportLast update(RmAutoReportLast po, DataCdC0Vo dataCdC0Vo) throws Exception {
        po.dt = new Date() ;
    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;
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/TkPreGenObjs.java
@@ -13,6 +13,7 @@
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TkPreGenObjs extends TaskSurpport {
    
@@ -27,7 +28,6 @@
     */
    @Override
    public void execute(Object data) throws ParseException {
        DateFormat fmt =new SimpleDateFormat(("yyyy_MM_dd_HH_mm_ss"));
        Data d = (Data)data ;
        String rtuAddr = d.getRtuAddr() ;//TkRtuData里判断了rtuAddr为空
        DbSv sv = (DbSv)SpringContextUtil.getBean(DbSv.class) ;
@@ -38,7 +38,7 @@
                //流浪者控制器
                PrControllerTramp rtuTramp = sv.getPrControllerTrampByRtuAddr(rtuAddr);
                if(rtuTramp == null){
                    rtuTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), fmt.parse(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
@@ -16,6 +16,8 @@
                    <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">
pipIrr-platform/Îĵµ/ȡˮ¿Ú¿ØÖÆÆ÷¼°²â¿ØÊý¾Ý¹ØÏµ.docx
Binary files differ
pipIrr-platform/Îĵµ/ȡˮ¿Ú¿ØÖÆÆ÷¼°²â¿ØÊý¾Ý¹ØÏµ.vsd
Binary files differ