diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java index f2b3f7c..fe250fc 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java @@ -5,6 +5,9 @@ import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; +import java.util.List; +import java.util.Map; + /** *

* 管线表 服务类 @@ -17,4 +20,6 @@ Page listPage(Page page, BusPipelineRequestDTO requestDTO); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java index f2b3f7c..fe250fc 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java @@ -5,6 +5,9 @@ import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; +import java.util.List; +import java.util.Map; + /** *

* 管线表 服务类 @@ -17,4 +20,6 @@ Page listPage(Page page, BusPipelineRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java index b5d4abd..7836600 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java @@ -31,4 +31,6 @@ List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); List repairLog(DeviceMonitorRequestDTO requestDTO); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java index f2b3f7c..fe250fc 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java @@ -5,6 +5,9 @@ import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; +import java.util.List; +import java.util.Map; + /** *

* 管线表 服务类 @@ -17,4 +20,6 @@ Page listPage(Page page, BusPipelineRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java index b5d4abd..7836600 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java @@ -31,4 +31,6 @@ List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); List repairLog(DeviceMonitorRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java index f97aac7..981fb27 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java @@ -13,6 +13,10 @@ import com.casic.missiles.modular.device.service.IBusConfigService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -28,39 +32,44 @@ private final AbstractPermissionContext abstractPermissionContext; + @Transactional @Override public boolean saveConfig(BusConfigDTO busConfigTO) { - switch (busConfigTO.getDeviceTypeName()) { - case "燃气智能监测终端": - //采集间隔,重传次数,上传周期 - busConfigTO.setFramecontent("reloadInterval:" - .concat(busConfigTO.getCollectInterval()) - .concat(";") - .concat("reloadInterval:") - .concat(busConfigTO.getReloadInterval()) - .concat(";") - .concat("uploadPeriod:") - .concat(busConfigTO.getUploadPeriod())); - busConfigTO.setFramecontentDesc("采集间隔:" - .concat(busConfigTO.getCollectInterval()) - .concat("分;").concat("重传次数:") - .concat(busConfigTO.getReloadInterval()) - .concat("次;").concat("上传周期:") - .concat(busConfigTO.getUploadPeriod()) - .concat("分")); - break; - - default: - break; - - } - //添加操作人 - AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if (null != user) { - busConfigTO.setOperator(user.getId()); - busConfigTO.setOperatorName(user.getName()); - } - return this.baseMapper.insert(busConfigTO) > 0 ? true : false; + //todo:批量写入 + List devcodes = busConfigTO.getDevCodeList(); + devcodes.forEach(devcode -> { + switch (busConfigTO.getDeviceTypeName()) { + case "燃气智能监测终端": + //采集间隔,重传次数,上传周期 + busConfigTO.setFramecontent("reloadInterval:" + .concat(busConfigTO.getCollectInterval()) + .concat(";") + .concat("reloadInterval:") + .concat(busConfigTO.getReloadInterval()) + .concat(";") + .concat("uploadPeriod:") + .concat(busConfigTO.getUploadPeriod())); + busConfigTO.setFramecontentDesc("采集间隔:" + .concat(busConfigTO.getCollectInterval()) + .concat("分;").concat("重传次数:") + .concat(busConfigTO.getReloadInterval()) + .concat("次;").concat("上传周期:") + .concat(busConfigTO.getUploadPeriod()) + .concat("分")); + break; + default: + break; + } + //添加操作人 + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + if (null != user) { + busConfigTO.setOperator(user.getId()); + busConfigTO.setOperatorName(user.getName()); + } + busConfigTO.setDevcode(devcode); + this.baseMapper.insert(busConfigTO); + }); + return true; } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java index f2b3f7c..fe250fc 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java @@ -5,6 +5,9 @@ import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; +import java.util.List; +import java.util.Map; + /** *

* 管线表 服务类 @@ -17,4 +20,6 @@ Page listPage(Page page, BusPipelineRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java index b5d4abd..7836600 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java @@ -31,4 +31,6 @@ List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); List repairLog(DeviceMonitorRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java index f97aac7..981fb27 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java @@ -13,6 +13,10 @@ import com.casic.missiles.modular.device.service.IBusConfigService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -28,39 +32,44 @@ private final AbstractPermissionContext abstractPermissionContext; + @Transactional @Override public boolean saveConfig(BusConfigDTO busConfigTO) { - switch (busConfigTO.getDeviceTypeName()) { - case "燃气智能监测终端": - //采集间隔,重传次数,上传周期 - busConfigTO.setFramecontent("reloadInterval:" - .concat(busConfigTO.getCollectInterval()) - .concat(";") - .concat("reloadInterval:") - .concat(busConfigTO.getReloadInterval()) - .concat(";") - .concat("uploadPeriod:") - .concat(busConfigTO.getUploadPeriod())); - busConfigTO.setFramecontentDesc("采集间隔:" - .concat(busConfigTO.getCollectInterval()) - .concat("分;").concat("重传次数:") - .concat(busConfigTO.getReloadInterval()) - .concat("次;").concat("上传周期:") - .concat(busConfigTO.getUploadPeriod()) - .concat("分")); - break; - - default: - break; - - } - //添加操作人 - AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if (null != user) { - busConfigTO.setOperator(user.getId()); - busConfigTO.setOperatorName(user.getName()); - } - return this.baseMapper.insert(busConfigTO) > 0 ? true : false; + //todo:批量写入 + List devcodes = busConfigTO.getDevCodeList(); + devcodes.forEach(devcode -> { + switch (busConfigTO.getDeviceTypeName()) { + case "燃气智能监测终端": + //采集间隔,重传次数,上传周期 + busConfigTO.setFramecontent("reloadInterval:" + .concat(busConfigTO.getCollectInterval()) + .concat(";") + .concat("reloadInterval:") + .concat(busConfigTO.getReloadInterval()) + .concat(";") + .concat("uploadPeriod:") + .concat(busConfigTO.getUploadPeriod())); + busConfigTO.setFramecontentDesc("采集间隔:" + .concat(busConfigTO.getCollectInterval()) + .concat("分;").concat("重传次数:") + .concat(busConfigTO.getReloadInterval()) + .concat("次;").concat("上传周期:") + .concat(busConfigTO.getUploadPeriod()) + .concat("分")); + break; + default: + break; + } + //添加操作人 + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + if (null != user) { + busConfigTO.setOperator(user.getId()); + busConfigTO.setOperatorName(user.getName()); + } + busConfigTO.setDevcode(devcode); + this.baseMapper.insert(busConfigTO); + }); + return true; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 0ad7dd1..0e26b21 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -1,11 +1,33 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dao.BusLedgerPipeMapper; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.system.model.Dept; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** *

* 台账管理 服务实现类 @@ -14,7 +36,126 @@ * @author zt * @since 2024-08-29 */ +@RequiredArgsConstructor @Service public class BusLedgerPipeServiceImpl extends ServiceImpl implements IBusLedgerPipeService { + private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; + private final AbstractDictService abstractDictService; + private final BusDeviceMapper busDeviceMapper; + + @Override + public Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope) { + List deptIds = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(request.getDeptId())) { + deptIds = getDeptIds(request.getDeptId()); + } else { + deptIds = dataScope.getDeptIds(); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getTagNumber()), "TAG_NUMBER", request.getTagNumber()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPipeCode()), "PIPE_CODE", request.getPipeCode()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPosition()), "POSITION", request.getPosition()); + queryWrapper.in(ObjectUtil.isNotEmpty(deptIds), "DEPTID", deptIds); + Page pipePage = this.page(page, queryWrapper); + List pipeList = pipePage.getRecords(); + pipeList.forEach(pipe -> { + pipe.setDeptName(getDeptNamesByDeptId(pipe.getDeptid())); + }); + return pipePage; + } + + + @Override + public Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope) { + + Page pageList = this.baseMapper.monitorPipePageList(page, request, getDeptScopeIds(request.getDeptId())); + List busLedgerList = pageList.getRecords(); + busLedgerList.forEach(busLedger -> { + busLedger.setOnState(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setDeptName(getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 + busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + }); + return pageList; + } + + @Override + public BusLedgerPipeResponseDTO detail(Long id, String devcode) { + BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); + + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + return busLedgerPipeResponseDTO; + } + + + @Override + public List> watchDataByPipe(MonitorDataRequestDTO request) { + List> resultMap = new ArrayList<>(); + DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); + resultMap = this.busDeviceMapper.monitorData(deviceDataEnum.getTableName(), + deviceDataEnum.getTableColumns(), + queryColumns[0], + queryColumns[1], + queryColumns[2], + deviceDataEnum.getOrderColumn(), + request); + } + return resultMap; + } + + + @Override + public List> pipeList() { + return this.baseMapper.pipeList(); + } + + @Override + public List> deviceList() { + return this.baseMapper.deviceList(getDeptScopeIds(null)); + } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + + public List getDeptIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds; + } + return null; + } + + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java index f2b3f7c..fe250fc 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java @@ -5,6 +5,9 @@ import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; +import java.util.List; +import java.util.Map; + /** *

* 管线表 服务类 @@ -17,4 +20,6 @@ Page listPage(Page page, BusPipelineRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java index b5d4abd..7836600 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java @@ -31,4 +31,6 @@ List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); List repairLog(DeviceMonitorRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java index f97aac7..981fb27 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java @@ -13,6 +13,10 @@ import com.casic.missiles.modular.device.service.IBusConfigService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -28,39 +32,44 @@ private final AbstractPermissionContext abstractPermissionContext; + @Transactional @Override public boolean saveConfig(BusConfigDTO busConfigTO) { - switch (busConfigTO.getDeviceTypeName()) { - case "燃气智能监测终端": - //采集间隔,重传次数,上传周期 - busConfigTO.setFramecontent("reloadInterval:" - .concat(busConfigTO.getCollectInterval()) - .concat(";") - .concat("reloadInterval:") - .concat(busConfigTO.getReloadInterval()) - .concat(";") - .concat("uploadPeriod:") - .concat(busConfigTO.getUploadPeriod())); - busConfigTO.setFramecontentDesc("采集间隔:" - .concat(busConfigTO.getCollectInterval()) - .concat("分;").concat("重传次数:") - .concat(busConfigTO.getReloadInterval()) - .concat("次;").concat("上传周期:") - .concat(busConfigTO.getUploadPeriod()) - .concat("分")); - break; - - default: - break; - - } - //添加操作人 - AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if (null != user) { - busConfigTO.setOperator(user.getId()); - busConfigTO.setOperatorName(user.getName()); - } - return this.baseMapper.insert(busConfigTO) > 0 ? true : false; + //todo:批量写入 + List devcodes = busConfigTO.getDevCodeList(); + devcodes.forEach(devcode -> { + switch (busConfigTO.getDeviceTypeName()) { + case "燃气智能监测终端": + //采集间隔,重传次数,上传周期 + busConfigTO.setFramecontent("reloadInterval:" + .concat(busConfigTO.getCollectInterval()) + .concat(";") + .concat("reloadInterval:") + .concat(busConfigTO.getReloadInterval()) + .concat(";") + .concat("uploadPeriod:") + .concat(busConfigTO.getUploadPeriod())); + busConfigTO.setFramecontentDesc("采集间隔:" + .concat(busConfigTO.getCollectInterval()) + .concat("分;").concat("重传次数:") + .concat(busConfigTO.getReloadInterval()) + .concat("次;").concat("上传周期:") + .concat(busConfigTO.getUploadPeriod()) + .concat("分")); + break; + default: + break; + } + //添加操作人 + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + if (null != user) { + busConfigTO.setOperator(user.getId()); + busConfigTO.setOperatorName(user.getName()); + } + busConfigTO.setDevcode(devcode); + this.baseMapper.insert(busConfigTO); + }); + return true; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 0ad7dd1..0e26b21 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -1,11 +1,33 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dao.BusLedgerPipeMapper; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.system.model.Dept; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** *

* 台账管理 服务实现类 @@ -14,7 +36,126 @@ * @author zt * @since 2024-08-29 */ +@RequiredArgsConstructor @Service public class BusLedgerPipeServiceImpl extends ServiceImpl implements IBusLedgerPipeService { + private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; + private final AbstractDictService abstractDictService; + private final BusDeviceMapper busDeviceMapper; + + @Override + public Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope) { + List deptIds = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(request.getDeptId())) { + deptIds = getDeptIds(request.getDeptId()); + } else { + deptIds = dataScope.getDeptIds(); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getTagNumber()), "TAG_NUMBER", request.getTagNumber()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPipeCode()), "PIPE_CODE", request.getPipeCode()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPosition()), "POSITION", request.getPosition()); + queryWrapper.in(ObjectUtil.isNotEmpty(deptIds), "DEPTID", deptIds); + Page pipePage = this.page(page, queryWrapper); + List pipeList = pipePage.getRecords(); + pipeList.forEach(pipe -> { + pipe.setDeptName(getDeptNamesByDeptId(pipe.getDeptid())); + }); + return pipePage; + } + + + @Override + public Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope) { + + Page pageList = this.baseMapper.monitorPipePageList(page, request, getDeptScopeIds(request.getDeptId())); + List busLedgerList = pageList.getRecords(); + busLedgerList.forEach(busLedger -> { + busLedger.setOnState(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setDeptName(getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 + busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + }); + return pageList; + } + + @Override + public BusLedgerPipeResponseDTO detail(Long id, String devcode) { + BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); + + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + return busLedgerPipeResponseDTO; + } + + + @Override + public List> watchDataByPipe(MonitorDataRequestDTO request) { + List> resultMap = new ArrayList<>(); + DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); + resultMap = this.busDeviceMapper.monitorData(deviceDataEnum.getTableName(), + deviceDataEnum.getTableColumns(), + queryColumns[0], + queryColumns[1], + queryColumns[2], + deviceDataEnum.getOrderColumn(), + request); + } + return resultMap; + } + + + @Override + public List> pipeList() { + return this.baseMapper.pipeList(); + } + + @Override + public List> deviceList() { + return this.baseMapper.deviceList(getDeptScopeIds(null)); + } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + + public List getDeptIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds; + } + return null; + } + + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index 666bc37..8749fb1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -56,9 +56,15 @@ return pageGridList; } + @Override + public boolean addRemark(BusLedgerDTO request) { + BusLedger busLedger = new BusLedger(); + busLedger.setId(request.getId()); + busLedger.setMarker(request.getMarker()); + return this.baseMapper.updateById(busLedger)>0?true:false; + } - - public List ledgerIdsByTagNumber(String tagNumber,String type) { + public List ledgerIdsByTagNumber(String tagNumber, String type) { return this.baseMapper.ledgerIdsByTagNumber(tagNumber,type); @@ -73,4 +79,17 @@ } return ""; } + + + @Override + public BusLedger detail(Long id) { + BusLedger busLedger =this.baseMapper.detail(id); + busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 + busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 + busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 + busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + busLedger.setBuriedName("1".equals(busLedger.getBuried())?"是":"否"); + return busLedger; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java index f2b3f7c..fe250fc 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java @@ -5,6 +5,9 @@ import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; +import java.util.List; +import java.util.Map; + /** *

* 管线表 服务类 @@ -17,4 +20,6 @@ Page listPage(Page page, BusPipelineRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java index b5d4abd..7836600 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java @@ -31,4 +31,6 @@ List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); List repairLog(DeviceMonitorRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java index f97aac7..981fb27 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java @@ -13,6 +13,10 @@ import com.casic.missiles.modular.device.service.IBusConfigService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -28,39 +32,44 @@ private final AbstractPermissionContext abstractPermissionContext; + @Transactional @Override public boolean saveConfig(BusConfigDTO busConfigTO) { - switch (busConfigTO.getDeviceTypeName()) { - case "燃气智能监测终端": - //采集间隔,重传次数,上传周期 - busConfigTO.setFramecontent("reloadInterval:" - .concat(busConfigTO.getCollectInterval()) - .concat(";") - .concat("reloadInterval:") - .concat(busConfigTO.getReloadInterval()) - .concat(";") - .concat("uploadPeriod:") - .concat(busConfigTO.getUploadPeriod())); - busConfigTO.setFramecontentDesc("采集间隔:" - .concat(busConfigTO.getCollectInterval()) - .concat("分;").concat("重传次数:") - .concat(busConfigTO.getReloadInterval()) - .concat("次;").concat("上传周期:") - .concat(busConfigTO.getUploadPeriod()) - .concat("分")); - break; - - default: - break; - - } - //添加操作人 - AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if (null != user) { - busConfigTO.setOperator(user.getId()); - busConfigTO.setOperatorName(user.getName()); - } - return this.baseMapper.insert(busConfigTO) > 0 ? true : false; + //todo:批量写入 + List devcodes = busConfigTO.getDevCodeList(); + devcodes.forEach(devcode -> { + switch (busConfigTO.getDeviceTypeName()) { + case "燃气智能监测终端": + //采集间隔,重传次数,上传周期 + busConfigTO.setFramecontent("reloadInterval:" + .concat(busConfigTO.getCollectInterval()) + .concat(";") + .concat("reloadInterval:") + .concat(busConfigTO.getReloadInterval()) + .concat(";") + .concat("uploadPeriod:") + .concat(busConfigTO.getUploadPeriod())); + busConfigTO.setFramecontentDesc("采集间隔:" + .concat(busConfigTO.getCollectInterval()) + .concat("分;").concat("重传次数:") + .concat(busConfigTO.getReloadInterval()) + .concat("次;").concat("上传周期:") + .concat(busConfigTO.getUploadPeriod()) + .concat("分")); + break; + default: + break; + } + //添加操作人 + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + if (null != user) { + busConfigTO.setOperator(user.getId()); + busConfigTO.setOperatorName(user.getName()); + } + busConfigTO.setDevcode(devcode); + this.baseMapper.insert(busConfigTO); + }); + return true; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 0ad7dd1..0e26b21 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -1,11 +1,33 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dao.BusLedgerPipeMapper; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.system.model.Dept; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** *

* 台账管理 服务实现类 @@ -14,7 +36,126 @@ * @author zt * @since 2024-08-29 */ +@RequiredArgsConstructor @Service public class BusLedgerPipeServiceImpl extends ServiceImpl implements IBusLedgerPipeService { + private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; + private final AbstractDictService abstractDictService; + private final BusDeviceMapper busDeviceMapper; + + @Override + public Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope) { + List deptIds = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(request.getDeptId())) { + deptIds = getDeptIds(request.getDeptId()); + } else { + deptIds = dataScope.getDeptIds(); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getTagNumber()), "TAG_NUMBER", request.getTagNumber()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPipeCode()), "PIPE_CODE", request.getPipeCode()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPosition()), "POSITION", request.getPosition()); + queryWrapper.in(ObjectUtil.isNotEmpty(deptIds), "DEPTID", deptIds); + Page pipePage = this.page(page, queryWrapper); + List pipeList = pipePage.getRecords(); + pipeList.forEach(pipe -> { + pipe.setDeptName(getDeptNamesByDeptId(pipe.getDeptid())); + }); + return pipePage; + } + + + @Override + public Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope) { + + Page pageList = this.baseMapper.monitorPipePageList(page, request, getDeptScopeIds(request.getDeptId())); + List busLedgerList = pageList.getRecords(); + busLedgerList.forEach(busLedger -> { + busLedger.setOnState(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setDeptName(getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 + busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + }); + return pageList; + } + + @Override + public BusLedgerPipeResponseDTO detail(Long id, String devcode) { + BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); + + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + return busLedgerPipeResponseDTO; + } + + + @Override + public List> watchDataByPipe(MonitorDataRequestDTO request) { + List> resultMap = new ArrayList<>(); + DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); + resultMap = this.busDeviceMapper.monitorData(deviceDataEnum.getTableName(), + deviceDataEnum.getTableColumns(), + queryColumns[0], + queryColumns[1], + queryColumns[2], + deviceDataEnum.getOrderColumn(), + request); + } + return resultMap; + } + + + @Override + public List> pipeList() { + return this.baseMapper.pipeList(); + } + + @Override + public List> deviceList() { + return this.baseMapper.deviceList(getDeptScopeIds(null)); + } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + + public List getDeptIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds; + } + return null; + } + + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index 666bc37..8749fb1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -56,9 +56,15 @@ return pageGridList; } + @Override + public boolean addRemark(BusLedgerDTO request) { + BusLedger busLedger = new BusLedger(); + busLedger.setId(request.getId()); + busLedger.setMarker(request.getMarker()); + return this.baseMapper.updateById(busLedger)>0?true:false; + } - - public List ledgerIdsByTagNumber(String tagNumber,String type) { + public List ledgerIdsByTagNumber(String tagNumber, String type) { return this.baseMapper.ledgerIdsByTagNumber(tagNumber,type); @@ -73,4 +79,17 @@ } return ""; } + + + @Override + public BusLedger detail(Long id) { + BusLedger busLedger =this.baseMapper.detail(id); + busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 + busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 + busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 + busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + busLedger.setBuriedName("1".equals(busLedger.getBuried())?"是":"否"); + return busLedger; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2b324c7..6e0fe85 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -56,14 +57,11 @@ busPipeline.setDeptName(getDeptNamesByDeptId(busPipeline.getDeptid())); - busPipeline.setResponsibleDeptName(abstractDeptService.getDeptName(busPipeline.getResponsibleDept())); - }); return pipelinePage; } - public String getDeptIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java index f2b3f7c..fe250fc 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java @@ -5,6 +5,9 @@ import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; +import java.util.List; +import java.util.Map; + /** *

* 管线表 服务类 @@ -17,4 +20,6 @@ Page listPage(Page page, BusPipelineRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java index b5d4abd..7836600 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java @@ -31,4 +31,6 @@ List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); List repairLog(DeviceMonitorRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java index f97aac7..981fb27 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java @@ -13,6 +13,10 @@ import com.casic.missiles.modular.device.service.IBusConfigService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -28,39 +32,44 @@ private final AbstractPermissionContext abstractPermissionContext; + @Transactional @Override public boolean saveConfig(BusConfigDTO busConfigTO) { - switch (busConfigTO.getDeviceTypeName()) { - case "燃气智能监测终端": - //采集间隔,重传次数,上传周期 - busConfigTO.setFramecontent("reloadInterval:" - .concat(busConfigTO.getCollectInterval()) - .concat(";") - .concat("reloadInterval:") - .concat(busConfigTO.getReloadInterval()) - .concat(";") - .concat("uploadPeriod:") - .concat(busConfigTO.getUploadPeriod())); - busConfigTO.setFramecontentDesc("采集间隔:" - .concat(busConfigTO.getCollectInterval()) - .concat("分;").concat("重传次数:") - .concat(busConfigTO.getReloadInterval()) - .concat("次;").concat("上传周期:") - .concat(busConfigTO.getUploadPeriod()) - .concat("分")); - break; - - default: - break; - - } - //添加操作人 - AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if (null != user) { - busConfigTO.setOperator(user.getId()); - busConfigTO.setOperatorName(user.getName()); - } - return this.baseMapper.insert(busConfigTO) > 0 ? true : false; + //todo:批量写入 + List devcodes = busConfigTO.getDevCodeList(); + devcodes.forEach(devcode -> { + switch (busConfigTO.getDeviceTypeName()) { + case "燃气智能监测终端": + //采集间隔,重传次数,上传周期 + busConfigTO.setFramecontent("reloadInterval:" + .concat(busConfigTO.getCollectInterval()) + .concat(";") + .concat("reloadInterval:") + .concat(busConfigTO.getReloadInterval()) + .concat(";") + .concat("uploadPeriod:") + .concat(busConfigTO.getUploadPeriod())); + busConfigTO.setFramecontentDesc("采集间隔:" + .concat(busConfigTO.getCollectInterval()) + .concat("分;").concat("重传次数:") + .concat(busConfigTO.getReloadInterval()) + .concat("次;").concat("上传周期:") + .concat(busConfigTO.getUploadPeriod()) + .concat("分")); + break; + default: + break; + } + //添加操作人 + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + if (null != user) { + busConfigTO.setOperator(user.getId()); + busConfigTO.setOperatorName(user.getName()); + } + busConfigTO.setDevcode(devcode); + this.baseMapper.insert(busConfigTO); + }); + return true; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 0ad7dd1..0e26b21 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -1,11 +1,33 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dao.BusLedgerPipeMapper; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.system.model.Dept; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** *

* 台账管理 服务实现类 @@ -14,7 +36,126 @@ * @author zt * @since 2024-08-29 */ +@RequiredArgsConstructor @Service public class BusLedgerPipeServiceImpl extends ServiceImpl implements IBusLedgerPipeService { + private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; + private final AbstractDictService abstractDictService; + private final BusDeviceMapper busDeviceMapper; + + @Override + public Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope) { + List deptIds = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(request.getDeptId())) { + deptIds = getDeptIds(request.getDeptId()); + } else { + deptIds = dataScope.getDeptIds(); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getTagNumber()), "TAG_NUMBER", request.getTagNumber()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPipeCode()), "PIPE_CODE", request.getPipeCode()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPosition()), "POSITION", request.getPosition()); + queryWrapper.in(ObjectUtil.isNotEmpty(deptIds), "DEPTID", deptIds); + Page pipePage = this.page(page, queryWrapper); + List pipeList = pipePage.getRecords(); + pipeList.forEach(pipe -> { + pipe.setDeptName(getDeptNamesByDeptId(pipe.getDeptid())); + }); + return pipePage; + } + + + @Override + public Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope) { + + Page pageList = this.baseMapper.monitorPipePageList(page, request, getDeptScopeIds(request.getDeptId())); + List busLedgerList = pageList.getRecords(); + busLedgerList.forEach(busLedger -> { + busLedger.setOnState(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setDeptName(getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 + busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + }); + return pageList; + } + + @Override + public BusLedgerPipeResponseDTO detail(Long id, String devcode) { + BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); + + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + return busLedgerPipeResponseDTO; + } + + + @Override + public List> watchDataByPipe(MonitorDataRequestDTO request) { + List> resultMap = new ArrayList<>(); + DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); + resultMap = this.busDeviceMapper.monitorData(deviceDataEnum.getTableName(), + deviceDataEnum.getTableColumns(), + queryColumns[0], + queryColumns[1], + queryColumns[2], + deviceDataEnum.getOrderColumn(), + request); + } + return resultMap; + } + + + @Override + public List> pipeList() { + return this.baseMapper.pipeList(); + } + + @Override + public List> deviceList() { + return this.baseMapper.deviceList(getDeptScopeIds(null)); + } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + + public List getDeptIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds; + } + return null; + } + + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index 666bc37..8749fb1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -56,9 +56,15 @@ return pageGridList; } + @Override + public boolean addRemark(BusLedgerDTO request) { + BusLedger busLedger = new BusLedger(); + busLedger.setId(request.getId()); + busLedger.setMarker(request.getMarker()); + return this.baseMapper.updateById(busLedger)>0?true:false; + } - - public List ledgerIdsByTagNumber(String tagNumber,String type) { + public List ledgerIdsByTagNumber(String tagNumber, String type) { return this.baseMapper.ledgerIdsByTagNumber(tagNumber,type); @@ -73,4 +79,17 @@ } return ""; } + + + @Override + public BusLedger detail(Long id) { + BusLedger busLedger =this.baseMapper.detail(id); + busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 + busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 + busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 + busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + busLedger.setBuriedName("1".equals(busLedger.getBuried())?"是":"否"); + return busLedger; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2b324c7..6e0fe85 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -56,14 +57,11 @@ busPipeline.setDeptName(getDeptNamesByDeptId(busPipeline.getDeptid())); - busPipeline.setResponsibleDeptName(abstractDeptService.getDeptName(busPipeline.getResponsibleDept())); - }); return pipelinePage; } - public String getDeptIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index bca0684..88aada8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.enums.DeviceDataEnum; @@ -15,6 +17,7 @@ import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.device.service.IBusWellMonitorService; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -40,6 +43,7 @@ private final AbstractDictService abstractDictService; private final IBusLedgerService iBusLedgerService; + private final AbstractDeptService abstractDeptService; public Page pageList(Page page, BusLedgerDTO request, DataScope dataScope) { @@ -51,10 +55,12 @@ busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + busLedger.setDeptName(getDeptNamesByDeptId(busLedger.getDeptid())); // 监控状态字典值 }); return pageList; } + @Override public List list(BusLedgerDTO request, DataScope dataScope) { // 地图不分页接口不再查字典值了 @@ -95,12 +101,22 @@ cycleRecordDTO.setProcessDuration(TimeConverter(cycleRecordDTO.getProcessDuration())); cycleRecordDTO.setRealAlarm("1".equals(cycleRecordDTO.getRealAlarm())?"是":"否"); alarmTypeMaps.forEach(map->{ - if(map.get("ID").toString().equals(cycleRecordDTO.getAlarmType())){ - cycleRecordDTO.setAlarmType(map.get("ALARM_TYPE").toString()); + if(map.get("ID").toString().equals(cycleRecordDTO.getAlarmTypeId()+"")){ + cycleRecordDTO.setAlarmTypeName(map.get("ALARM_TYPE").toString()); } }); } return lifeCycleRecordDTOList; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java index f2b3f7c..fe250fc 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java @@ -5,6 +5,9 @@ import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; +import java.util.List; +import java.util.Map; + /** *

* 管线表 服务类 @@ -17,4 +20,6 @@ Page listPage(Page page, BusPipelineRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java index b5d4abd..7836600 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java @@ -31,4 +31,6 @@ List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); List repairLog(DeviceMonitorRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java index f97aac7..981fb27 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java @@ -13,6 +13,10 @@ import com.casic.missiles.modular.device.service.IBusConfigService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -28,39 +32,44 @@ private final AbstractPermissionContext abstractPermissionContext; + @Transactional @Override public boolean saveConfig(BusConfigDTO busConfigTO) { - switch (busConfigTO.getDeviceTypeName()) { - case "燃气智能监测终端": - //采集间隔,重传次数,上传周期 - busConfigTO.setFramecontent("reloadInterval:" - .concat(busConfigTO.getCollectInterval()) - .concat(";") - .concat("reloadInterval:") - .concat(busConfigTO.getReloadInterval()) - .concat(";") - .concat("uploadPeriod:") - .concat(busConfigTO.getUploadPeriod())); - busConfigTO.setFramecontentDesc("采集间隔:" - .concat(busConfigTO.getCollectInterval()) - .concat("分;").concat("重传次数:") - .concat(busConfigTO.getReloadInterval()) - .concat("次;").concat("上传周期:") - .concat(busConfigTO.getUploadPeriod()) - .concat("分")); - break; - - default: - break; - - } - //添加操作人 - AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if (null != user) { - busConfigTO.setOperator(user.getId()); - busConfigTO.setOperatorName(user.getName()); - } - return this.baseMapper.insert(busConfigTO) > 0 ? true : false; + //todo:批量写入 + List devcodes = busConfigTO.getDevCodeList(); + devcodes.forEach(devcode -> { + switch (busConfigTO.getDeviceTypeName()) { + case "燃气智能监测终端": + //采集间隔,重传次数,上传周期 + busConfigTO.setFramecontent("reloadInterval:" + .concat(busConfigTO.getCollectInterval()) + .concat(";") + .concat("reloadInterval:") + .concat(busConfigTO.getReloadInterval()) + .concat(";") + .concat("uploadPeriod:") + .concat(busConfigTO.getUploadPeriod())); + busConfigTO.setFramecontentDesc("采集间隔:" + .concat(busConfigTO.getCollectInterval()) + .concat("分;").concat("重传次数:") + .concat(busConfigTO.getReloadInterval()) + .concat("次;").concat("上传周期:") + .concat(busConfigTO.getUploadPeriod()) + .concat("分")); + break; + default: + break; + } + //添加操作人 + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + if (null != user) { + busConfigTO.setOperator(user.getId()); + busConfigTO.setOperatorName(user.getName()); + } + busConfigTO.setDevcode(devcode); + this.baseMapper.insert(busConfigTO); + }); + return true; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 0ad7dd1..0e26b21 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -1,11 +1,33 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dao.BusLedgerPipeMapper; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.system.model.Dept; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** *

* 台账管理 服务实现类 @@ -14,7 +36,126 @@ * @author zt * @since 2024-08-29 */ +@RequiredArgsConstructor @Service public class BusLedgerPipeServiceImpl extends ServiceImpl implements IBusLedgerPipeService { + private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; + private final AbstractDictService abstractDictService; + private final BusDeviceMapper busDeviceMapper; + + @Override + public Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope) { + List deptIds = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(request.getDeptId())) { + deptIds = getDeptIds(request.getDeptId()); + } else { + deptIds = dataScope.getDeptIds(); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getTagNumber()), "TAG_NUMBER", request.getTagNumber()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPipeCode()), "PIPE_CODE", request.getPipeCode()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPosition()), "POSITION", request.getPosition()); + queryWrapper.in(ObjectUtil.isNotEmpty(deptIds), "DEPTID", deptIds); + Page pipePage = this.page(page, queryWrapper); + List pipeList = pipePage.getRecords(); + pipeList.forEach(pipe -> { + pipe.setDeptName(getDeptNamesByDeptId(pipe.getDeptid())); + }); + return pipePage; + } + + + @Override + public Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope) { + + Page pageList = this.baseMapper.monitorPipePageList(page, request, getDeptScopeIds(request.getDeptId())); + List busLedgerList = pageList.getRecords(); + busLedgerList.forEach(busLedger -> { + busLedger.setOnState(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setDeptName(getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 + busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + }); + return pageList; + } + + @Override + public BusLedgerPipeResponseDTO detail(Long id, String devcode) { + BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); + + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + return busLedgerPipeResponseDTO; + } + + + @Override + public List> watchDataByPipe(MonitorDataRequestDTO request) { + List> resultMap = new ArrayList<>(); + DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); + resultMap = this.busDeviceMapper.monitorData(deviceDataEnum.getTableName(), + deviceDataEnum.getTableColumns(), + queryColumns[0], + queryColumns[1], + queryColumns[2], + deviceDataEnum.getOrderColumn(), + request); + } + return resultMap; + } + + + @Override + public List> pipeList() { + return this.baseMapper.pipeList(); + } + + @Override + public List> deviceList() { + return this.baseMapper.deviceList(getDeptScopeIds(null)); + } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + + public List getDeptIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds; + } + return null; + } + + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index 666bc37..8749fb1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -56,9 +56,15 @@ return pageGridList; } + @Override + public boolean addRemark(BusLedgerDTO request) { + BusLedger busLedger = new BusLedger(); + busLedger.setId(request.getId()); + busLedger.setMarker(request.getMarker()); + return this.baseMapper.updateById(busLedger)>0?true:false; + } - - public List ledgerIdsByTagNumber(String tagNumber,String type) { + public List ledgerIdsByTagNumber(String tagNumber, String type) { return this.baseMapper.ledgerIdsByTagNumber(tagNumber,type); @@ -73,4 +79,17 @@ } return ""; } + + + @Override + public BusLedger detail(Long id) { + BusLedger busLedger =this.baseMapper.detail(id); + busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 + busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 + busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 + busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + busLedger.setBuriedName("1".equals(busLedger.getBuried())?"是":"否"); + return busLedger; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2b324c7..6e0fe85 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -56,14 +57,11 @@ busPipeline.setDeptName(getDeptNamesByDeptId(busPipeline.getDeptid())); - busPipeline.setResponsibleDeptName(abstractDeptService.getDeptName(busPipeline.getResponsibleDept())); - }); return pipelinePage; } - public String getDeptIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index bca0684..88aada8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.enums.DeviceDataEnum; @@ -15,6 +17,7 @@ import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.device.service.IBusWellMonitorService; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -40,6 +43,7 @@ private final AbstractDictService abstractDictService; private final IBusLedgerService iBusLedgerService; + private final AbstractDeptService abstractDeptService; public Page pageList(Page page, BusLedgerDTO request, DataScope dataScope) { @@ -51,10 +55,12 @@ busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + busLedger.setDeptName(getDeptNamesByDeptId(busLedger.getDeptid())); // 监控状态字典值 }); return pageList; } + @Override public List list(BusLedgerDTO request, DataScope dataScope) { // 地图不分页接口不再查字典值了 @@ -95,12 +101,22 @@ cycleRecordDTO.setProcessDuration(TimeConverter(cycleRecordDTO.getProcessDuration())); cycleRecordDTO.setRealAlarm("1".equals(cycleRecordDTO.getRealAlarm())?"是":"否"); alarmTypeMaps.forEach(map->{ - if(map.get("ID").toString().equals(cycleRecordDTO.getAlarmType())){ - cycleRecordDTO.setAlarmType(map.get("ALARM_TYPE").toString()); + if(map.get("ID").toString().equals(cycleRecordDTO.getAlarmTypeId()+"")){ + cycleRecordDTO.setAlarmTypeName(map.get("ALARM_TYPE").toString()); } }); } return lifeCycleRecordDTOList; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DeviceDataEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DeviceDataEnum.java index ee83ba4..d22a5b6 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DeviceDataEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DeviceDataEnum.java @@ -6,7 +6,7 @@ DATA_GAS("燃气智能监测终端", "data_gas", "devcode,uptime,logtime", "id,well_code,devcode,cell,strength,descn,uptime,logtime,pci,rsrp,snr", "logtime"), DATA_TUBE_OTHER("管网哨兵", "data_tube_other", "devcode,uptime,logtime", "DEVCODE,GASVAL, VBAT,SIN,RSRP,SINR,UPTIME,LOGTIME", "logtime"), - DATA_MONITOR_PIPE_OTHER("智能警示桩", "data_monitor_pipe_other", "devcode,uptime,logtime", "id,well_code,devcode,cell,strength,descn,uptime,logtime,pci,rsrp,snr", "logtime"), + DATA_MONITOR_PIPE_OTHER("智能警示桩", "data_monitor_pipe_other", "devcode,uptime,logtime", "TEMPERATURE,HUMIDITY,VBAT,PIPE_INCLINE_ALARM,PIPE_BREAK_ALARM,LEFT_OFF_LINE_ALARM,LEFT_VIBRATE_ALARM,RIGHT_OFF_LINE_ALARM,RIGHT_VIBRATE_ALARM,PICTURE_ALARM,LEFT_GAS,RIGHT_GAS,LOGTIME,UPTIME ", "logtime"), DATA_PAN_GAS("场站监测云台", "data_pan_gas", "DEVICE_CODE,,logtime", "id,well_code,devcode,cell,strength,descn,uptime,logtime,pci,rsrp,snr", "logtime"); public static DeviceDataEnum typeOf(String type) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index d489708..f1de75e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,ar.ALARM_NAME as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + " where bd.DEVCODE= ${devCode} and bd.VALID=1 " + + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") + List getRuleListByCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml index 5d129d4..c8e7d0e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleDeviceMapper.xml @@ -21,15 +21,15 @@ SELECT rd.*, bt.TYPE_NAME AS devTypeName, - lr.POSITION, - lr.TAG_NUMBER as tagNumber + lr.place as POSITION, + lr.tagNumber FROM alarm_rule_device rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID LEFT JOIN bus_device_ledger bl ON bd.ID = bl.DEVICE_ID AND bl.VALID = 1 - LEFT JOIN bus_ledger lr ON lr.ID = bl.LEDGER_ID + LEFT JOIN bus_ledger_all_view lr ON lr.ID = bl.LEDGER_ID and lr.type =bl.type AND bl.VALID = 1 AND lr.VALID =1 where 1=1 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java new file mode 100644 index 0000000..f7c97d1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleResponseDTO.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmRuleResponseDTO implements Cloneable{ + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("报警类型id") + private Long alarmTypeId; + + @ApiModelProperty("产品类型id") + private Long productId; + + @ApiModelProperty("报警等级id") + private Long alarmLevelId; + + @ApiModelProperty("报警值") + private String alarmThreshold; + + @ApiModelProperty("报警类型名称") + private String alarmTypeName; + + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java new file mode 100644 index 0000000..0e0cfbd --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusAlarmLedgerDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index adf8970..a79fe75 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -46,7 +46,7 @@ @ApiModelProperty("报警类型") @TableField("ALARM_TYPE_ID") - private String alarmTypeId; + private Long alarmTypeId; @ApiModelProperty("报警内容") @TableField("ALARM_CONTENT") @@ -57,7 +57,7 @@ @ApiModelProperty("告警等级") @TableField("ALARM_LEVEL") - private Integer alarmLevel; + private Long alarmLevel; @ApiModelProperty("报警时间") @TableField("ALARM_TIME") @@ -154,4 +154,25 @@ @TableField(exist = false) private String alarmCategory; + public AlarmRecords() { + } + + public AlarmRecords(String devcode, String ledgerCode, + String ledgerNumber, Long alarmTypeId, + String alarmContent, String alarmValue, + Long alarmLevel, Date alarmTime, + String alarmMsg, String position, + String exceptionType) { + this.devcode = devcode; + this.ledgerCode = ledgerCode; + this.ledgerNumber = ledgerNumber; + this.alarmTypeId = alarmTypeId; + this.alarmContent = alarmContent; + this.alarmValue = alarmValue; + this.alarmLevel = alarmLevel; + this.alarmTime = alarmTime; + this.alarmMsg = alarmMsg; + this.position = position; + this.exceptionType = exceptionType; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java index dc054fa..adab538 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRuleDevice.java @@ -64,6 +64,11 @@ @TableField(exist = false) private String position; + + @ApiModelProperty("报警类型id") + @TableField("ALARM_TYPE_ID") + private Long alarmTypeId; + @ApiModelProperty("报警规则(列表展示用)") @TableField(exist = false) private String alarmRuleName; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index dd3280e..e72da4c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -47,5 +47,12 @@ List allList(AlarmRecordDTO request, DataScope dataScope); + void cancelDeviceAlarm(String devCode); + + void cancelDataAlarm(String devCode); + + boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + + boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java index 8405969..4010f80 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleDeviceService.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; +import java.util.List; + /** *

* 报警规则(单个设备设置) 服务类 @@ -19,4 +21,6 @@ Page listPage(Page page, AlarmRuleDeviceDTO request); + List listByCode(String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java index c15a4e3..d3b2d44 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRuleService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.alarm.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import java.util.List; @@ -19,4 +20,6 @@ boolean batchDelete(List ids); boolean edit(AlarmRule alarmRule); + + List getByDevCode(String devCode); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 29ebc6f..1141659 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -25,10 +26,12 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -99,7 +102,7 @@ alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecords.getAlarmCategory())); + alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; } @@ -263,7 +266,7 @@ List deptIds = abstractDeptService.getParentListById(deptId); deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("id",deptIds); + queryWrapper.in("id", deptIds); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); @@ -283,16 +286,77 @@ @Override public List allList(AlarmRecordDTO request, DataScope dataScope) { - List alarmRecordExportDTOList = this.baseMapper.allList(request,dataScope,getDeptIds(request.getDeptId())); + List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); - alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory",alarmRecordExportDTO.getAlarmCategory())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; } + @Override + public void cancelDeviceAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "1"); + //只有挂起和已处置的才消 + updateWrapper.ge("PROCESS_STATUS", "3"); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } + + @Override + public boolean isDataAlarmByCode(String devCode, Float alarmThreshold) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + for (AlarmRecords alarmRecords : alarmRecordsList) { + //toDo:若新来报警升级,则挂起状态的 改为 未读 + if (CommonUtil.isNumber(alarmRecords.getAlarmValue())) { + + } + } + return true; + } + return false; + } + + @Override + public boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO) { + + for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { + try { + AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), + alarmRuleResponseDTO.getAlarmTypeName(), gas, + alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), + alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); + this.save(alarmRecords); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + return true; + } + + @Override + public void cancelDataAlarm(String devCode) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("DEVCODE", devCode); + updateWrapper.eq("EXCEPTION_TYPE", "0"); + //只有未读、已读、已确认、已处置、挂起的才消 + updateWrapper.in("PROCESS_STATUS", Arrays.asList("1","2","3","5","7")); + updateWrapper.eq("STATUS", "1"); + updateWrapper.set("STATUS", "0"); + this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java index 4a021bf..8aa5eeb 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleDeviceServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleDeviceMapper; @@ -27,15 +28,25 @@ private final IAlarmLevelControlService iAlarmLevelControlService; + @Override public Page listPage(Page page, AlarmRuleDeviceDTO request) { - Page alarmRuleDevicePage = this.baseMapper.listPage(page,request); + Page alarmRuleDevicePage = this.baseMapper.listPage(page, request); List alarmRuleDeviceList = alarmRuleDevicePage.getRecords(); alarmRuleDeviceList.forEach(alarmRuleDevice -> { - AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); - alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl!=null?alarmLevelControl.getAlarmLevel(): + AlarmLevelControl alarmLevelControl = iAlarmLevelControlService.getById(alarmRuleDevice.getAlarmLevelId()); + alarmRuleDevice.setAlarmRuleName(alarmRuleDevice.getAlarmRule().concat("[").concat(alarmLevelControl != null ? alarmLevelControl.getAlarmLevel() : "").concat("]:").concat(alarmRuleDevice.getAlarmThreshold())); }); return alarmRuleDevicePage; } + + @Override + public List listByCode(String devCode) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.orderByDesc( "ALARM_THRESHOLD"); + return this.list(queryWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java index 4947e66..a7b5d5e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRuleServiceImpl.java @@ -2,15 +2,19 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.entity.AlarmRuleDetail; +import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.service.IAlarmRuleDetailService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -28,7 +32,7 @@ @Service public class AlarmRuleServiceImpl extends ServiceImpl implements IAlarmRuleService { - private final IAlarmRuleDetailService iAlarmRuleDetailService; + private final IAlarmRuleDeviceService iAlarmRuleDeviceService; @Transactional @Override @@ -66,4 +70,26 @@ // } return true; } + + + @Override + public List getByDevCode(String devCode) { + //toDo:缓存取 + List alarmRuleResponseDTOS = new ArrayList<>(); + List alarmRuleDeviceList = iAlarmRuleDeviceService.listByCode(devCode); + //若不存在单个设备规则,则按照产品统一获取报警规则 + if (null == alarmRuleDeviceList || alarmRuleDeviceList.size() < 1) { + alarmRuleResponseDTOS = this.baseMapper.getRuleListByCode(devCode); + } else { + for (AlarmRuleDevice alarmRuleDevice : alarmRuleDeviceList) { + AlarmRuleResponseDTO alarmRuleResponseDTO = new AlarmRuleResponseDTO(); + alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); + alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); + alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); + alarmRuleResponseDTO.setAlarmTypeName(alarmRuleDevice.getAlarmRule()); + alarmRuleResponseDTOS.add(alarmRuleResponseDTO); + } + } + return alarmRuleResponseDTOS; + } } diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 8495936..4d001d0 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -59,6 +59,16 @@ junit test + + com.casic + casic-public + 2.0.0 + + + com.casic + casic-alarm + 2.0.0 + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java new file mode 100644 index 0000000..b36562c --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/BusWellMapper.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.data.dao; + +import com.casic.missiles.modular.data.dto.BusWellDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 智能燃气监测终端上传数据表 Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface BusWellMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE=${devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java new file mode 100644 index 0000000..3efbbe2 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dto/BusWellDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.data.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusWellDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("位号,闸井/场站用") + private String tagNumber; + + @ApiModelProperty("编号,闸井/场站用") + private String ledgerCode; + + @ApiModelProperty("位置") + private String place; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 1cbf5af..1231242 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,11 +1,28 @@ package com.casic.missiles.modular.data.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.enums.DeviceTypeEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; +import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -16,14 +33,105 @@ * @since 2024-07-16 */ @Service +@Slf4j +@RequiredArgsConstructor public class DataGasServiceImpl extends ServiceImpl implements IDataGasService, IDataAbstractService { /** * 处理接收数据逻辑 + * * @param dataContent */ + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + private final BusWellMapper busWellMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IAlarmRuleService alarmRuleService; + @Override public void process(String dataContent) { - System.out.println("接收到数据--->"+dataContent); + + System.out.println("接收到数据--->" + dataContent); + + //解析数据+根据业务处理存储数据 + JSONObject json = JSONObject.parseObject(dataContent); + String devCode = json.get("devCode").toString(); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + this.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 +// this.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + if (DeviceTypeEnum.Methane.name().equals(json.get("devType"))) { + if ("MethaneConfigSuccess".equals(jsonObject.get("bType"))) { +// deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); +// imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = jsonObject.getString("cell"); + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + List busWellDTOList = busWellMapper.getListByDevCode(devCode); + List busLedgerDTOList = new ArrayList<>(); + for (BusWellDTO busWellDTO : busWellDTOList) { + BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); + BeanUtils.copyProperties(busWellDTO, busLedgerDTO); + busLedgerDTOList.add(busLedgerDTO); + } + for (int i = 0; i < jsonArray.size(); i++) { + try { + String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 +// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + if (busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { + alarmRecordsService.saveAlarms(devCode, gas, upTime, busLedgerDTOList, alarmRuleResponseDTO); + } + break; + } + } + } + //5.清数据报警 + alarmRecordsService.cancelDataAlarm(devCode); + + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java index 3660a95..a53296b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerController.java @@ -1,12 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; @@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -51,5 +57,26 @@ Page page = PageFactory.defaultPage(); return ReturnUtil.success(super.packForBT(iBusLedgerService.pageGridList(page, request, dataScope))); } + + @ApiOperation("添加标注") + @PostMapping("/addRemark") + @ResponseBody + public ReturnDTO addRemark(@RequestBody BusLedgerDTO request) { + Assert.isFalse(Objects.isNull(request.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.addRemark( request)); + } + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO repairLog(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerService.detail(idDTO.getId())); + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java index 911474e..e44e0ee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusLedgerPipeController.java @@ -1,10 +1,14 @@ package com.casic.missiles.modular.device.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; -import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -26,13 +30,25 @@ @RequestMapping("/system/busLedgerPipe") public class BusLedgerPipeController extends ExportController { - final private IBusLedgerPipeService iBusLedgerPipeService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; @ApiOperation("新建点位") @PostMapping("/addPosition") @ResponseBody public ReturnDTO addPosition(@RequestBody BusLedgerPipe busLedgerPipe) { - return ReturnUtil.success(iBusLedgerPipeService.save(busLedgerPipe)); + iBusLedgerPipeService.save(busLedgerPipe); + return ReturnUtil.success(busLedgerPipe.getId()); + } + + + @ApiOperation("分页列表查询") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeRequestDTO busLedgerPipeRequestDTO) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO, dataScope))); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java new file mode 100644 index 0000000..a21688a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -0,0 +1,122 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.dto.BusLedgerPipeDetailRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import com.casic.missiles.modular.device.entity.BusPipeline; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Api(tags = "管线监测模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/pipe") +public class BusPipeMonitorController extends ExportController { + + private final IBusLedgerPipeService iBusLedgerPipeService; + private final AbstractPermissionContext iCommonPermissionService; + + @ApiOperation("查询分页接口,列表用") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusLedgerPipeMonitorRequestDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.monitorPipePageList(page, request, dataScope))); + } + + @ApiOperation("管线列表,地图用") + @PostMapping("/pipeList") + @ResponseBody + public ReturnDTO pipeList() { + return ReturnUtil.success(iBusLedgerPipeService.pipeList()); + } + + @ApiOperation("设备列表,地图用") + @PostMapping("/deviceList") + @ResponseBody + public ReturnDTO deviceList() { + return ReturnUtil.success(iBusLedgerPipeService.deviceList()); + } + + + @ApiOperation("详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody BusLedgerPipeDetailRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + } + +// @ApiOperation("查询接口,地图用") +// @PostMapping("/list") +// @ResponseBody +// public ReturnDTO list(@RequestBody BusLedgerDTO request) { +// DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); +// return ReturnUtil.success(wellMonitorService.list(request, dataScope)); +// } +// + @ApiOperation("查看监测数据") + @PostMapping("/watchDataByPipe") + @ResponseBody + public ReturnDTO watchDataByWell(@RequestBody MonitorDataRequestDTO requestDTO) { + Assert.isFalse(Objects.isNull(requestDTO.getDevcode()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.watchDataByPipe(requestDTO)); + } +// +// @ApiOperation("全生命周期记录查询") +// @PostMapping("/lifecycleRecord") +// @ResponseBody +// public ReturnDTO lifecycleRecord(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.lifecycleRecord(requestDTO)); +// } +// +// @ApiOperation("全生命周期记录导出") +// @RequestMapping(value = "/lifecycleRecordExp", method = RequestMethod.GET) +// public void lifecycleRecordExp(@RequestBody DeviceMonitorRequestDTO requestDTO, HttpServletResponse response) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// try { +// iBaseExportService.exportExcel(response, LifeCycleRecordDTO.class, wellMonitorService.lifecycleRecord(requestDTO), ExportEnum.LIFE_CYCLE_RECORD_EXPORT.getSheetName()); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// @ApiOperation("监控设备维护记录") +// @PostMapping("/repairLog") +// @ResponseBody +// public ReturnDTO repairLog(@RequestBody DeviceMonitorRequestDTO requestDTO) { +// Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); +// } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index 2803dfc..d8e334f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -58,6 +58,8 @@ } + + @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java index 9a9b09f..b57bf3f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusWellMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; @@ -95,4 +96,6 @@ }); return ReturnUtil.success(wellMonitorService.repairLog(requestDTO)); } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java index 743ff7a..e518623 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerMapper.java @@ -30,4 +30,6 @@ @Select("SELECT id FROM bus_ledger_all_view WHERE tagNumber = #{tagNumber} and type= #{type} ") List ledgerIdsByTagNumber(@Param("tagNumber") String tagNumber ,@Param("type") String type); + + BusLedger detail(@Param("id") Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java index 46fd9ab..5226b76 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusLedgerPipeMapper.java @@ -1,8 +1,16 @@ package com.casic.missiles.modular.device.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; /** *

@@ -15,4 +23,20 @@ @Mapper public interface BusLedgerPipeMapper extends BaseMapper { + + Page monitorPipePageList(Page page, + @Param("request") BusLedgerPipeMonitorRequestDTO request, + @Param("deptStrs") String deptStrs); + + BusLedgerPipeResponseDTO detail(@Param("id") Long id, + @Param("devcode") String devcode); + + + @Select("SELECT t.PIPE_CODE,t.START_LAT,t.START_LNG,t.END_LAT,t.END_LNG FROM `bus_pipeline` t") + List> pipeList(); + + + List> deviceList( @Param("deptids") String deptids); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index f52be19..eb98a0e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -52,4 +52,6 @@ @Select("SELECT at.ID,at.ALARM_TYPE FROM `alarm_type` at ") List> alarmType(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 606a6af..3379c6e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -96,7 +96,7 @@ bt.IS_USED =1 - diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml index 9622fbb..67560d1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerMapper.xml @@ -92,4 +92,16 @@ ORDER BY bg.TS DESC + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index f16cdfc..0f09165 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -4,28 +4,135 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - ID, PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + ID + , PIPE_CODE, LEDGER_NAME, TAG_NUMBER, LNG_GAODE, LAT_GAODE, POSITION, DEPTID, RESPONSIBLE_DEPT, ON_STATE, TS, VALID, SFQ, MONITOR_STATE + + + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml index 09043c9..b19b8ca 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusPipelineMapper.xml @@ -19,7 +19,7 @@ - ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,TS + ID, PIPE_CODE, PIPE_DIAMETER, MATERIAL, CONSTRUCT_ERA, DEPTID,RESPONSIBLE_DEPT, POSITION, PRESS_TYPE, MANAGE_TYPE, START_LNG,START_LAT,END_LNG,END_LAT,PROPERTY_OWNER,TS diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index 7263d6d..472fff7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -64,12 +64,10 @@ SELECT bl.*, - sd.FULL_NAME as responsibleDeptName, sdd.FULL_NAME as deptName, bdl.deviceCount FROM bus_ledger bl - LEFT JOIN sys_dept sd ON bl.RESPONSIBLE_DEPT = sd.ID LEFT JOIN sys_dept sdd ON bl.DEPTID = sdd.ID LEFT JOIN device_count_temp bdl on bdl.LEDGER_ID = bl.id and bdl.type = bl.type WHERE bl.VALID = '1' AND bl.TYPE = '1' @@ -181,7 +179,7 @@ + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java index b7ca873..f1613dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusConfigDTO.java @@ -8,7 +8,7 @@ import lombok.Setter; import java.io.Serializable; - +import java.util.List; @Data @@ -25,4 +25,7 @@ @ApiModelProperty("重传次数") private String reloadInterval; + @ApiModelProperty("设备编号list") + private List devCodeList; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 098588f..288c40d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -57,4 +57,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long id; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java new file mode 100644 index 0000000..acc1cc5 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeDetailRequestDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeDetailRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java new file mode 100644 index 0000000..36dc4e1 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeMonitorRequestDTO.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeMonitorRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("监控状态(1:正常,2:异常,3:离线,0:未监测)") + private String monitorState; + + @ApiModelProperty("使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("安装方式(0:地埋,1:桩式)") + private String installType; + + @ApiModelProperty("设备编号") + private String devCode; + + @ApiModelProperty("设备名称") + private String devName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java new file mode 100644 index 0000000..0980c34 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeRequestDTO.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeRequestDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("管线编号") + private String pipeCode; + + @ApiModelProperty("管理单位") + private Long deptId; + + @ApiModelProperty("详细位置") + private String position; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java new file mode 100644 index 0000000..7965bfc --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerPipeResponseDTO.java @@ -0,0 +1,78 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusLedgerPipeResponseDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("安装位号") + private String tagNumber; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("设备类型") + private String typeName; + + @ApiModelProperty("设备型号") + private String modelName; + + @ApiModelProperty("厂商") + private String manufactureName; + + @ApiModelProperty("管理单位名称") + private String deptName; + + private Long deptid; + + @ApiModelProperty("所在区域") + private String area; + + @ApiModelProperty("详细位置") + private String position; + + @ApiModelProperty("经度(高德)") + private String lngGaode; + + @ApiModelProperty("纬度(高德)") + private String latGaode; + + @ApiModelProperty("关联管线") + private String pipeCode; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("压力级制") + private String pressType; + + @ApiModelProperty("管径(mm)") + private String pipeDiameter; + + @ApiModelProperty("管材") + private String material; + + @ApiModelProperty("建设年代") + private String constructEra; + + @ApiModelProperty("设备使用状态(0:停用,1:投用)") + private String onState; + + @ApiModelProperty("设备运行状态") + private String status; + + @ApiModelProperty("左侧指示带长度") + private String leftLength; + + @ApiModelProperty("左侧指示带长度") + private String rightLength; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java index 77926e8..a1d06b2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/LifeCycleRecordDTO.java @@ -11,9 +11,10 @@ @ExcelProperty(value = "设备编号", order = 1) @ApiModelProperty("报警时间") private Date alarmTime; + private Long alarmTypeId; @ExcelProperty(value = "报警类型", order = 2) @ApiModelProperty("报警类型") - private String alarmType; + private String alarmTypeName; @ExcelProperty(value = "报警等级", order = 3) @ApiModelProperty("报警等级") private String alarmLevel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 9ba0f48..2f96a10 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -99,6 +99,10 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ApiModelProperty("备注") + @TableField("REMARKS") + private String remarks; + @ExcelProperty(value = "监测对象", order = 3) @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) @TableField("WATCH_OBJECT") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java index 7e490e7..ca0c7ce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedger.java @@ -124,10 +124,30 @@ @TableField("SFQ") private String sfq; + @ApiModelProperty("是否直埋(1:是,0:否)") + @TableField("BURIED") + private String buried; + @ApiModelProperty("产权单位") @TableField("PROPERTY_OWNER") private String propertyOwner; + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + + @ApiModelProperty("启用日期") + @TableField("OPEN_DATE") + private String openDate; + + @ApiModelProperty("所在区域") + @TableField("AREA") + private String area; + @ApiModelProperty("监控状态(0:未监控,1:正常,2:异常,3:离线)") @TableField("MONITOR_STATE") private String monitorState; @@ -164,4 +184,8 @@ @TableField(exist = false) private String deviceCount; + @ApiModelProperty("直埋名称") + @TableField(exist = false) + private String buriedName; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index ac585a4..1b17c9d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -4,13 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; +import java.util.Date; + /** *

* 台账管理 @@ -55,11 +56,11 @@ @TableField("POSITION") private String position; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") @TableField("DEPTID") private Long deptid; - @ApiModelProperty("管理责任部门") + @ApiModelProperty("责任部门") @TableField("RESPONSIBLE_DEPT") private Long responsibleDept; @@ -69,7 +70,7 @@ @ApiModelProperty("时间戳") @TableField("TS") - private LocalDateTime ts; + private Date ts; @ApiModelProperty("是否有效(其他:删除,1:有效)") @TableField("VALID") @@ -83,5 +84,29 @@ @TableField("MONITOR_STATE") private String monitorState; + @ApiModelProperty("管理单位名称") + @TableField(exist = false) + private String deptName; + + @ApiModelProperty("设备编号") + @TableField(exist = false) + private String devcode; + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; + @ApiModelProperty("压力级制") + @TableField(exist = false) + private String pressType; + @ApiModelProperty("管径(mm)") + @TableField(exist = false) + private String pipeDiameter; + @ApiModelProperty("管材") + @TableField(exist = false) + private String material; + @ApiModelProperty("建设年代") + @TableField(exist = false) + private String constructEra; + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 81e3c06..7a51dee 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,9 +57,10 @@ @TableField("DEPTID") private Long deptid; + @ExcelProperty(value = "产权单位", order = 7) @ApiModelProperty("产权单位") - @TableField("RESPONSIBLE_DEPT") - private Long responsibleDept; + @TableField("PROPERTY_OWNER") + private String propertyOwner; @ExcelProperty(value = "管线位置", order = 2) @ApiModelProperty("详细位置") @@ -114,10 +115,5 @@ @TableField(exist = false) private String deptName; - @ExcelProperty(value = "产权单位", order = 7) - @ApiModelProperty("管理责任部门名称") - @TableField("exist = false") - private String responsibleDeptName; - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java index 9a1e392..0159989 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerPipeService.java @@ -1,8 +1,17 @@ package com.casic.missiles.modular.device.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; +import java.util.List; +import java.util.Map; + /** *

* 台账管理 服务类 @@ -13,4 +22,17 @@ */ public interface IBusLedgerPipeService extends IService { + Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope); + + Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope); + + BusLedgerPipeResponseDTO detail(Long id,String devcode); + + List> watchDataByPipe(MonitorDataRequestDTO requestDTO); + + List> pipeList(); + + List> deviceList(); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java index 6041b7f..37c4594 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusLedgerService.java @@ -1,11 +1,11 @@ package com.casic.missiles.modular.device.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -24,4 +24,7 @@ Page pageGridList(Page page, BusLedgerDTO request, DataScope dataScope); List ledgerIdsByTagNumber(String tagNumber,String type); + + boolean addRemark(BusLedgerDTO request); + BusLedger detail(Long id); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java index f2b3f7c..fe250fc 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusPipelineService.java @@ -5,6 +5,9 @@ import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; +import java.util.List; +import java.util.Map; + /** *

* 管线表 服务类 @@ -17,4 +20,6 @@ Page listPage(Page page, BusPipelineRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java index b5d4abd..7836600 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusWellMonitorService.java @@ -31,4 +31,6 @@ List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); List repairLog(DeviceMonitorRequestDTO requestDTO); + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java index f97aac7..981fb27 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusConfigServiceImpl.java @@ -13,6 +13,10 @@ import com.casic.missiles.modular.device.service.IBusConfigService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** *

@@ -28,39 +32,44 @@ private final AbstractPermissionContext abstractPermissionContext; + @Transactional @Override public boolean saveConfig(BusConfigDTO busConfigTO) { - switch (busConfigTO.getDeviceTypeName()) { - case "燃气智能监测终端": - //采集间隔,重传次数,上传周期 - busConfigTO.setFramecontent("reloadInterval:" - .concat(busConfigTO.getCollectInterval()) - .concat(";") - .concat("reloadInterval:") - .concat(busConfigTO.getReloadInterval()) - .concat(";") - .concat("uploadPeriod:") - .concat(busConfigTO.getUploadPeriod())); - busConfigTO.setFramecontentDesc("采集间隔:" - .concat(busConfigTO.getCollectInterval()) - .concat("分;").concat("重传次数:") - .concat(busConfigTO.getReloadInterval()) - .concat("次;").concat("上传周期:") - .concat(busConfigTO.getUploadPeriod()) - .concat("分")); - break; - - default: - break; - - } - //添加操作人 - AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if (null != user) { - busConfigTO.setOperator(user.getId()); - busConfigTO.setOperatorName(user.getName()); - } - return this.baseMapper.insert(busConfigTO) > 0 ? true : false; + //todo:批量写入 + List devcodes = busConfigTO.getDevCodeList(); + devcodes.forEach(devcode -> { + switch (busConfigTO.getDeviceTypeName()) { + case "燃气智能监测终端": + //采集间隔,重传次数,上传周期 + busConfigTO.setFramecontent("reloadInterval:" + .concat(busConfigTO.getCollectInterval()) + .concat(";") + .concat("reloadInterval:") + .concat(busConfigTO.getReloadInterval()) + .concat(";") + .concat("uploadPeriod:") + .concat(busConfigTO.getUploadPeriod())); + busConfigTO.setFramecontentDesc("采集间隔:" + .concat(busConfigTO.getCollectInterval()) + .concat("分;").concat("重传次数:") + .concat(busConfigTO.getReloadInterval()) + .concat("次;").concat("上传周期:") + .concat(busConfigTO.getUploadPeriod()) + .concat("分")); + break; + default: + break; + } + //添加操作人 + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + if (null != user) { + busConfigTO.setOperator(user.getId()); + busConfigTO.setOperatorName(user.getName()); + } + busConfigTO.setDevcode(devcode); + this.baseMapper.insert(busConfigTO); + }); + return true; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 0ad7dd1..0e26b21 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -1,11 +1,33 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; +import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dao.BusLedgerPipeMapper; +import com.casic.missiles.modular.device.dto.BusLedgerPipeMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeRequestDTO; +import com.casic.missiles.modular.device.dto.BusLedgerPipeResponseDTO; +import com.casic.missiles.modular.device.dto.MonitorDataRequestDTO; +import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.system.model.Dept; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** *

* 台账管理 服务实现类 @@ -14,7 +36,126 @@ * @author zt * @since 2024-08-29 */ +@RequiredArgsConstructor @Service public class BusLedgerPipeServiceImpl extends ServiceImpl implements IBusLedgerPipeService { + private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; + private final AbstractDictService abstractDictService; + private final BusDeviceMapper busDeviceMapper; + + @Override + public Page listPage(Page page, BusLedgerPipeRequestDTO request, DataScope dataScope) { + List deptIds = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(request.getDeptId())) { + deptIds = getDeptIds(request.getDeptId()); + } else { + deptIds = dataScope.getDeptIds(); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getTagNumber()), "TAG_NUMBER", request.getTagNumber()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPipeCode()), "PIPE_CODE", request.getPipeCode()); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getPosition()), "POSITION", request.getPosition()); + queryWrapper.in(ObjectUtil.isNotEmpty(deptIds), "DEPTID", deptIds); + Page pipePage = this.page(page, queryWrapper); + List pipeList = pipePage.getRecords(); + pipeList.forEach(pipe -> { + pipe.setDeptName(getDeptNamesByDeptId(pipe.getDeptid())); + }); + return pipePage; + } + + + @Override + public Page monitorPipePageList(Page page, BusLedgerPipeMonitorRequestDTO request, DataScope dataScope) { + + Page pageList = this.baseMapper.monitorPipePageList(page, request, getDeptScopeIds(request.getDeptId())); + List busLedgerList = pageList.getRecords(); + busLedgerList.forEach(busLedger -> { + busLedger.setOnState(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setDeptName(getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 + busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + }); + return pageList; + } + + @Override + public BusLedgerPipeResponseDTO detail(Long id, String devcode) { + BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); + + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + return busLedgerPipeResponseDTO; + } + + + @Override + public List> watchDataByPipe(MonitorDataRequestDTO request) { + List> resultMap = new ArrayList<>(); + DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); + resultMap = this.busDeviceMapper.monitorData(deviceDataEnum.getTableName(), + deviceDataEnum.getTableColumns(), + queryColumns[0], + queryColumns[1], + queryColumns[2], + deviceDataEnum.getOrderColumn(), + request); + } + return resultMap; + } + + + @Override + public List> pipeList() { + return this.baseMapper.pipeList(); + } + + @Override + public List> deviceList() { + return this.baseMapper.deviceList(getDeptScopeIds(null)); + } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + + public List getDeptIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds; + } + return null; + } + + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index 666bc37..8749fb1 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -56,9 +56,15 @@ return pageGridList; } + @Override + public boolean addRemark(BusLedgerDTO request) { + BusLedger busLedger = new BusLedger(); + busLedger.setId(request.getId()); + busLedger.setMarker(request.getMarker()); + return this.baseMapper.updateById(busLedger)>0?true:false; + } - - public List ledgerIdsByTagNumber(String tagNumber,String type) { + public List ledgerIdsByTagNumber(String tagNumber, String type) { return this.baseMapper.ledgerIdsByTagNumber(tagNumber,type); @@ -73,4 +79,17 @@ } return ""; } + + + @Override + public BusLedger detail(Long id) { + BusLedger busLedger =this.baseMapper.detail(id); + busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 + busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 + busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 + busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 + busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + busLedger.setBuriedName("1".equals(busLedger.getBuried())?"是":"否"); + return busLedger; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2b324c7..6e0fe85 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -56,14 +57,11 @@ busPipeline.setDeptName(getDeptNamesByDeptId(busPipeline.getDeptid())); - busPipeline.setResponsibleDeptName(abstractDeptService.getDeptName(busPipeline.getResponsibleDept())); - }); return pipelinePage; } - public String getDeptIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index bca0684..88aada8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,8 +1,10 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.enums.DeviceDataEnum; @@ -15,6 +17,7 @@ import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.device.service.IBusWellMonitorService; +import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -40,6 +43,7 @@ private final AbstractDictService abstractDictService; private final IBusLedgerService iBusLedgerService; + private final AbstractDeptService abstractDeptService; public Page pageList(Page page, BusLedgerDTO request, DataScope dataScope) { @@ -51,10 +55,12 @@ busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 + busLedger.setDeptName(getDeptNamesByDeptId(busLedger.getDeptid())); // 监控状态字典值 }); return pageList; } + @Override public List list(BusLedgerDTO request, DataScope dataScope) { // 地图不分页接口不再查字典值了 @@ -95,12 +101,22 @@ cycleRecordDTO.setProcessDuration(TimeConverter(cycleRecordDTO.getProcessDuration())); cycleRecordDTO.setRealAlarm("1".equals(cycleRecordDTO.getRealAlarm())?"是":"否"); alarmTypeMaps.forEach(map->{ - if(map.get("ID").toString().equals(cycleRecordDTO.getAlarmType())){ - cycleRecordDTO.setAlarmType(map.get("ALARM_TYPE").toString()); + if(map.get("ID").toString().equals(cycleRecordDTO.getAlarmTypeId()+"")){ + cycleRecordDTO.setAlarmTypeName(map.get("ALARM_TYPE").toString()); } }); } return lifeCycleRecordDTOList; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DeviceDataEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DeviceDataEnum.java index ee83ba4..d22a5b6 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DeviceDataEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DeviceDataEnum.java @@ -6,7 +6,7 @@ DATA_GAS("燃气智能监测终端", "data_gas", "devcode,uptime,logtime", "id,well_code,devcode,cell,strength,descn,uptime,logtime,pci,rsrp,snr", "logtime"), DATA_TUBE_OTHER("管网哨兵", "data_tube_other", "devcode,uptime,logtime", "DEVCODE,GASVAL, VBAT,SIN,RSRP,SINR,UPTIME,LOGTIME", "logtime"), - DATA_MONITOR_PIPE_OTHER("智能警示桩", "data_monitor_pipe_other", "devcode,uptime,logtime", "id,well_code,devcode,cell,strength,descn,uptime,logtime,pci,rsrp,snr", "logtime"), + DATA_MONITOR_PIPE_OTHER("智能警示桩", "data_monitor_pipe_other", "devcode,uptime,logtime", "TEMPERATURE,HUMIDITY,VBAT,PIPE_INCLINE_ALARM,PIPE_BREAK_ALARM,LEFT_OFF_LINE_ALARM,LEFT_VIBRATE_ALARM,RIGHT_OFF_LINE_ALARM,RIGHT_VIBRATE_ALARM,PICTURE_ALARM,LEFT_GAS,RIGHT_GAS,LOGTIME,UPTIME ", "logtime"), DATA_PAN_GAS("场站监测云台", "data_pan_gas", "DEVICE_CODE,,logtime", "id,well_code,devcode,cell,strength,descn,uptime,logtime,pci,rsrp,snr", "logtime"); public static DeviceDataEnum typeOf(String type) { diff --git a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java new file mode 100644 index 0000000..9c5cc24 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java @@ -0,0 +1,21 @@ +package com.casic.missiles.util; + +import java.text.SimpleDateFormat; + +public class CommonUtil { + public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + public static boolean isNumber(String str) { + return str.matches("-?\\d+(\\.\\d+)?"); + } + + public static String DateFormat(String dataString) { + + String strymd = dataString.substring(0, 8); + String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; + String strhms = dataString.substring(8); + String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); + dataString =str1+str2; + return dataString; + } +}