diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java new file mode 100644 index 0000000..d2242c6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.SyncLogDetailMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Service +public class SyncLogDetailServiceImpl extends ServiceImpl implements ISyncLogDetailService { + + @Override + public boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent) { + + SyncLogDetail syncLogDetail = new SyncLogDetail(); + syncLogDetail.setSyncLogId(syncId); + syncLogDetail.setAddContent(addContent); + syncLogDetail.setUpdateContent(updateContent); + syncLogDetail.setDeleteContent(deleteContent); + return this.baseMapper.insert(syncLogDetail) > 0 ? true : false; + } + + @Override + public List getListBySyncId(Long syncId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("SYNC_LOG_ID", syncId); + return this.list(queryWrapper); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java new file mode 100644 index 0000000..d2242c6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.SyncLogDetailMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Service +public class SyncLogDetailServiceImpl extends ServiceImpl implements ISyncLogDetailService { + + @Override + public boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent) { + + SyncLogDetail syncLogDetail = new SyncLogDetail(); + syncLogDetail.setSyncLogId(syncId); + syncLogDetail.setAddContent(addContent); + syncLogDetail.setUpdateContent(updateContent); + syncLogDetail.setDeleteContent(deleteContent); + return this.baseMapper.insert(syncLogDetail) > 0 ? true : false; + } + + @Override + public List getListBySyncId(Long syncId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("SYNC_LOG_ID", syncId); + return this.list(queryWrapper); + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java new file mode 100644 index 0000000..24afe4e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.device.dao.SyncLogMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RequiredArgsConstructor +@Service +public class SyncLogServiceImpl extends ServiceImpl implements ISyncLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSyncLogs(Long id, Date startTime, Date endTime, String syncType, String updateCount, String deleteCount, String addCount) { + + SyncLog syncLog = new SyncLog(); + syncLog.setId(id); + syncLog.setStartTime(startTime); + syncLog.setEndTime(endTime); + syncLog.setSyncType(syncType); + syncLog.setUpdateCount(updateCount); + syncLog.setAddCount(addCount); + syncLog.setDeleteCount(deleteCount); + syncLog.setCreateUser(permissionContext.getAuthService().getLoginUser().getName()); + + return this.baseMapper.insert(syncLog) > 0 ? true : false; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java new file mode 100644 index 0000000..d2242c6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.SyncLogDetailMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Service +public class SyncLogDetailServiceImpl extends ServiceImpl implements ISyncLogDetailService { + + @Override + public boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent) { + + SyncLogDetail syncLogDetail = new SyncLogDetail(); + syncLogDetail.setSyncLogId(syncId); + syncLogDetail.setAddContent(addContent); + syncLogDetail.setUpdateContent(updateContent); + syncLogDetail.setDeleteContent(deleteContent); + return this.baseMapper.insert(syncLogDetail) > 0 ? true : false; + } + + @Override + public List getListBySyncId(Long syncId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("SYNC_LOG_ID", syncId); + return this.list(queryWrapper); + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java new file mode 100644 index 0000000..24afe4e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.device.dao.SyncLogMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RequiredArgsConstructor +@Service +public class SyncLogServiceImpl extends ServiceImpl implements ISyncLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSyncLogs(Long id, Date startTime, Date endTime, String syncType, String updateCount, String deleteCount, String addCount) { + + SyncLog syncLog = new SyncLog(); + syncLog.setId(id); + syncLog.setStartTime(startTime); + syncLog.setEndTime(endTime); + syncLog.setSyncType(syncType); + syncLog.setUpdateCount(updateCount); + syncLog.setAddCount(addCount); + syncLog.setDeleteCount(deleteCount); + syncLog.setCreateUser(permissionContext.getAuthService().getLoginUser().getName()); + + return this.baseMapper.insert(syncLog) > 0 ? true : false; + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java index e26a6be..876ffc7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java @@ -17,4 +17,6 @@ @Service public class SysOperationLogServiceImpl extends ServiceImpl implements ISysOperationLogService { + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java new file mode 100644 index 0000000..d2242c6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.SyncLogDetailMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Service +public class SyncLogDetailServiceImpl extends ServiceImpl implements ISyncLogDetailService { + + @Override + public boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent) { + + SyncLogDetail syncLogDetail = new SyncLogDetail(); + syncLogDetail.setSyncLogId(syncId); + syncLogDetail.setAddContent(addContent); + syncLogDetail.setUpdateContent(updateContent); + syncLogDetail.setDeleteContent(deleteContent); + return this.baseMapper.insert(syncLogDetail) > 0 ? true : false; + } + + @Override + public List getListBySyncId(Long syncId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("SYNC_LOG_ID", syncId); + return this.list(queryWrapper); + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java new file mode 100644 index 0000000..24afe4e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.device.dao.SyncLogMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RequiredArgsConstructor +@Service +public class SyncLogServiceImpl extends ServiceImpl implements ISyncLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSyncLogs(Long id, Date startTime, Date endTime, String syncType, String updateCount, String deleteCount, String addCount) { + + SyncLog syncLog = new SyncLog(); + syncLog.setId(id); + syncLog.setStartTime(startTime); + syncLog.setEndTime(endTime); + syncLog.setSyncType(syncType); + syncLog.setUpdateCount(updateCount); + syncLog.setAddCount(addCount); + syncLog.setDeleteCount(deleteCount); + syncLog.setCreateUser(permissionContext.getAuthService().getLoginUser().getName()); + + return this.baseMapper.insert(syncLog) > 0 ? true : false; + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java index e26a6be..876ffc7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java @@ -17,4 +17,6 @@ @Service public class SysOperationLogServiceImpl extends ServiceImpl implements ISysOperationLogService { + + } diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java new file mode 100644 index 0000000..f847fdf --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java @@ -0,0 +1,136 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.casic.missiles.modular.device.service.IBusGridService; +import com.casic.missiles.modular.device.service.IBusLedgerService; +import com.casic.missiles.modular.device.service.ICtUserService; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.DependsOn; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by admin on 2015/1/15. + */ +@DependsOn("taskScheduler") +@RequiredArgsConstructor +@Component +@Transactional +public class CheckingJob { + private static Logger logger = LoggerFactory.getLogger(CheckingJob.class); + + private final IAlarmRecordsService iAlarmRecordsService; + private final ISuspendLogService iSuspendLogService; + private final IApprovalLogService iApprovalLogService; + private final IBusLedgerService iBusLedgerService; + private final ICtUserService iCtUserService; + private final IBusGridService iBusGridService; + + @Value("${casic.enabled}") + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + private boolean enabled = true; + + //更新设备是否离线 + @Scheduled(cron = "0 0 1 * * ?") + public void execute() { + logger.info("开始执行离线告警任务"); + if (!enabled) { + return; + } + try { + iAlarmRecordsService.processOffline(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + //挂起时间到期处理 + @Scheduled(cron = "0 0/5 * * * ?") + public void executeSuspendExpire() { + if (!enabled) { + return; + } + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", new Date()); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + if (suspendLogList != null && suspendLogList.size() > 0) { + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + @Scheduled(cron = "0 0 23 * * ?") + public void executeSyncData() { + logger.info("开始执行全量同步数据任务"); + if (!enabled) { + return; + } + try { + //先同步部门 + iBusLedgerService.synAllDept(); + //同步台账 + iBusLedgerService.synAllLedger(); + //同步用户 + iCtUserService.synAllUsers(); + //同步网格 + iBusGridService.synAllGrids(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + +// TaskScheduler taskScheduler = SpringContextUtil.getApplicationContext().getBean(TaskScheduler.class); + + +// @PostConstruct +// public void scheduleRunnableWithCronTrigger() { +// +// taskScheduler.schedule(new RunnableTask1(), new CronTrigger("0 0/2 * * * *")); +// taskScheduler.schedule(new RunnableTask2(), new CronTrigger("0 0/1 * * * *")); +// } +// +// static class RunnableTask1 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask1现在时间:" + new Date()); +// } +// } +// +// static class RunnableTask2 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask2现在时间:" + new Date()); +// } +// } + +} \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java new file mode 100644 index 0000000..d2242c6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.SyncLogDetailMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Service +public class SyncLogDetailServiceImpl extends ServiceImpl implements ISyncLogDetailService { + + @Override + public boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent) { + + SyncLogDetail syncLogDetail = new SyncLogDetail(); + syncLogDetail.setSyncLogId(syncId); + syncLogDetail.setAddContent(addContent); + syncLogDetail.setUpdateContent(updateContent); + syncLogDetail.setDeleteContent(deleteContent); + return this.baseMapper.insert(syncLogDetail) > 0 ? true : false; + } + + @Override + public List getListBySyncId(Long syncId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("SYNC_LOG_ID", syncId); + return this.list(queryWrapper); + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java new file mode 100644 index 0000000..24afe4e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.device.dao.SyncLogMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RequiredArgsConstructor +@Service +public class SyncLogServiceImpl extends ServiceImpl implements ISyncLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSyncLogs(Long id, Date startTime, Date endTime, String syncType, String updateCount, String deleteCount, String addCount) { + + SyncLog syncLog = new SyncLog(); + syncLog.setId(id); + syncLog.setStartTime(startTime); + syncLog.setEndTime(endTime); + syncLog.setSyncType(syncType); + syncLog.setUpdateCount(updateCount); + syncLog.setAddCount(addCount); + syncLog.setDeleteCount(deleteCount); + syncLog.setCreateUser(permissionContext.getAuthService().getLoginUser().getName()); + + return this.baseMapper.insert(syncLog) > 0 ? true : false; + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java index e26a6be..876ffc7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java @@ -17,4 +17,6 @@ @Service public class SysOperationLogServiceImpl extends ServiceImpl implements ISysOperationLogService { + + } diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java new file mode 100644 index 0000000..f847fdf --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java @@ -0,0 +1,136 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.casic.missiles.modular.device.service.IBusGridService; +import com.casic.missiles.modular.device.service.IBusLedgerService; +import com.casic.missiles.modular.device.service.ICtUserService; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.DependsOn; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by admin on 2015/1/15. + */ +@DependsOn("taskScheduler") +@RequiredArgsConstructor +@Component +@Transactional +public class CheckingJob { + private static Logger logger = LoggerFactory.getLogger(CheckingJob.class); + + private final IAlarmRecordsService iAlarmRecordsService; + private final ISuspendLogService iSuspendLogService; + private final IApprovalLogService iApprovalLogService; + private final IBusLedgerService iBusLedgerService; + private final ICtUserService iCtUserService; + private final IBusGridService iBusGridService; + + @Value("${casic.enabled}") + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + private boolean enabled = true; + + //更新设备是否离线 + @Scheduled(cron = "0 0 1 * * ?") + public void execute() { + logger.info("开始执行离线告警任务"); + if (!enabled) { + return; + } + try { + iAlarmRecordsService.processOffline(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + //挂起时间到期处理 + @Scheduled(cron = "0 0/5 * * * ?") + public void executeSuspendExpire() { + if (!enabled) { + return; + } + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", new Date()); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + if (suspendLogList != null && suspendLogList.size() > 0) { + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + @Scheduled(cron = "0 0 23 * * ?") + public void executeSyncData() { + logger.info("开始执行全量同步数据任务"); + if (!enabled) { + return; + } + try { + //先同步部门 + iBusLedgerService.synAllDept(); + //同步台账 + iBusLedgerService.synAllLedger(); + //同步用户 + iCtUserService.synAllUsers(); + //同步网格 + iBusGridService.synAllGrids(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + +// TaskScheduler taskScheduler = SpringContextUtil.getApplicationContext().getBean(TaskScheduler.class); + + +// @PostConstruct +// public void scheduleRunnableWithCronTrigger() { +// +// taskScheduler.schedule(new RunnableTask1(), new CronTrigger("0 0/2 * * * *")); +// taskScheduler.schedule(new RunnableTask2(), new CronTrigger("0 0/1 * * * *")); +// } +// +// static class RunnableTask1 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask1现在时间:" + new Date()); +// } +// } +// +// static class RunnableTask2 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask2现在时间:" + new Date()); +// } +// } + +} \ No newline at end of file diff --git a/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java new file mode 100644 index 0000000..8ad95dc --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java @@ -0,0 +1,51 @@ +package com.casic.missiles.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +import javax.annotation.Resource; + +@Resource +public class SnowFlakeUtil { + private long machineId ; + private long dataCenterId ; + + + public SnowFlakeUtil(long machineId, long dataCenterId) { + this.machineId = machineId; + this.dataCenterId = dataCenterId; + } + + /** + * 成员类,SnowFlakeUtil的实例对象的保存域 + */ + private static class IdGenHolder { + private static final SnowFlakeUtil instance = new SnowFlakeUtil(); + } + + /** + * 外部调用获取SnowFlakeUtil的实例对象,确保不可变 + */ + public static SnowFlakeUtil get() { + return IdGenHolder.instance; + } + + /** + * 初始化构造,无参构造有参函数,默认节点都是0 + */ + public SnowFlakeUtil() { + this(0L, 0L); + } + + private Snowflake snowflake = IdUtil.createSnowflake(machineId,dataCenterId); + + public synchronized long id(){ + return snowflake.nextId(); + } + + public static Long getId() { + return SnowFlakeUtil.get().id(); + } +} + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java new file mode 100644 index 0000000..d2242c6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.SyncLogDetailMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Service +public class SyncLogDetailServiceImpl extends ServiceImpl implements ISyncLogDetailService { + + @Override + public boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent) { + + SyncLogDetail syncLogDetail = new SyncLogDetail(); + syncLogDetail.setSyncLogId(syncId); + syncLogDetail.setAddContent(addContent); + syncLogDetail.setUpdateContent(updateContent); + syncLogDetail.setDeleteContent(deleteContent); + return this.baseMapper.insert(syncLogDetail) > 0 ? true : false; + } + + @Override + public List getListBySyncId(Long syncId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("SYNC_LOG_ID", syncId); + return this.list(queryWrapper); + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java new file mode 100644 index 0000000..24afe4e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.device.dao.SyncLogMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RequiredArgsConstructor +@Service +public class SyncLogServiceImpl extends ServiceImpl implements ISyncLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSyncLogs(Long id, Date startTime, Date endTime, String syncType, String updateCount, String deleteCount, String addCount) { + + SyncLog syncLog = new SyncLog(); + syncLog.setId(id); + syncLog.setStartTime(startTime); + syncLog.setEndTime(endTime); + syncLog.setSyncType(syncType); + syncLog.setUpdateCount(updateCount); + syncLog.setAddCount(addCount); + syncLog.setDeleteCount(deleteCount); + syncLog.setCreateUser(permissionContext.getAuthService().getLoginUser().getName()); + + return this.baseMapper.insert(syncLog) > 0 ? true : false; + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java index e26a6be..876ffc7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java @@ -17,4 +17,6 @@ @Service public class SysOperationLogServiceImpl extends ServiceImpl implements ISysOperationLogService { + + } diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java new file mode 100644 index 0000000..f847fdf --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java @@ -0,0 +1,136 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.casic.missiles.modular.device.service.IBusGridService; +import com.casic.missiles.modular.device.service.IBusLedgerService; +import com.casic.missiles.modular.device.service.ICtUserService; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.DependsOn; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by admin on 2015/1/15. + */ +@DependsOn("taskScheduler") +@RequiredArgsConstructor +@Component +@Transactional +public class CheckingJob { + private static Logger logger = LoggerFactory.getLogger(CheckingJob.class); + + private final IAlarmRecordsService iAlarmRecordsService; + private final ISuspendLogService iSuspendLogService; + private final IApprovalLogService iApprovalLogService; + private final IBusLedgerService iBusLedgerService; + private final ICtUserService iCtUserService; + private final IBusGridService iBusGridService; + + @Value("${casic.enabled}") + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + private boolean enabled = true; + + //更新设备是否离线 + @Scheduled(cron = "0 0 1 * * ?") + public void execute() { + logger.info("开始执行离线告警任务"); + if (!enabled) { + return; + } + try { + iAlarmRecordsService.processOffline(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + //挂起时间到期处理 + @Scheduled(cron = "0 0/5 * * * ?") + public void executeSuspendExpire() { + if (!enabled) { + return; + } + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", new Date()); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + if (suspendLogList != null && suspendLogList.size() > 0) { + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + @Scheduled(cron = "0 0 23 * * ?") + public void executeSyncData() { + logger.info("开始执行全量同步数据任务"); + if (!enabled) { + return; + } + try { + //先同步部门 + iBusLedgerService.synAllDept(); + //同步台账 + iBusLedgerService.synAllLedger(); + //同步用户 + iCtUserService.synAllUsers(); + //同步网格 + iBusGridService.synAllGrids(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + +// TaskScheduler taskScheduler = SpringContextUtil.getApplicationContext().getBean(TaskScheduler.class); + + +// @PostConstruct +// public void scheduleRunnableWithCronTrigger() { +// +// taskScheduler.schedule(new RunnableTask1(), new CronTrigger("0 0/2 * * * *")); +// taskScheduler.schedule(new RunnableTask2(), new CronTrigger("0 0/1 * * * *")); +// } +// +// static class RunnableTask1 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask1现在时间:" + new Date()); +// } +// } +// +// static class RunnableTask2 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask2现在时间:" + new Date()); +// } +// } + +} \ No newline at end of file diff --git a/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java new file mode 100644 index 0000000..8ad95dc --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java @@ -0,0 +1,51 @@ +package com.casic.missiles.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +import javax.annotation.Resource; + +@Resource +public class SnowFlakeUtil { + private long machineId ; + private long dataCenterId ; + + + public SnowFlakeUtil(long machineId, long dataCenterId) { + this.machineId = machineId; + this.dataCenterId = dataCenterId; + } + + /** + * 成员类,SnowFlakeUtil的实例对象的保存域 + */ + private static class IdGenHolder { + private static final SnowFlakeUtil instance = new SnowFlakeUtil(); + } + + /** + * 外部调用获取SnowFlakeUtil的实例对象,确保不可变 + */ + public static SnowFlakeUtil get() { + return IdGenHolder.instance; + } + + /** + * 初始化构造,无参构造有参函数,默认节点都是0 + */ + public SnowFlakeUtil() { + this(0L, 0L); + } + + private Snowflake snowflake = IdUtil.createSnowflake(machineId,dataCenterId); + + public synchronized long id(){ + return snowflake.nextId(); + } + + public static Long getId() { + return SnowFlakeUtil.get().id(); + } +} + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java index ce8992b..03cb6a3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java @@ -65,7 +65,7 @@ //策略配置 .strategyConfig(builder -> { - builder.addInclude("sys_role") // 设置需要生成的表名 + builder.addInclude("sync_log","sync_log_detail") // 设置需要生成的表名 .addTablePrefix() // 设置过滤表前缀 .entityBuilder() //实体类配置 .enableLombok() //使用lombok diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java new file mode 100644 index 0000000..d2242c6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.SyncLogDetailMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Service +public class SyncLogDetailServiceImpl extends ServiceImpl implements ISyncLogDetailService { + + @Override + public boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent) { + + SyncLogDetail syncLogDetail = new SyncLogDetail(); + syncLogDetail.setSyncLogId(syncId); + syncLogDetail.setAddContent(addContent); + syncLogDetail.setUpdateContent(updateContent); + syncLogDetail.setDeleteContent(deleteContent); + return this.baseMapper.insert(syncLogDetail) > 0 ? true : false; + } + + @Override + public List getListBySyncId(Long syncId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("SYNC_LOG_ID", syncId); + return this.list(queryWrapper); + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java new file mode 100644 index 0000000..24afe4e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.device.dao.SyncLogMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RequiredArgsConstructor +@Service +public class SyncLogServiceImpl extends ServiceImpl implements ISyncLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSyncLogs(Long id, Date startTime, Date endTime, String syncType, String updateCount, String deleteCount, String addCount) { + + SyncLog syncLog = new SyncLog(); + syncLog.setId(id); + syncLog.setStartTime(startTime); + syncLog.setEndTime(endTime); + syncLog.setSyncType(syncType); + syncLog.setUpdateCount(updateCount); + syncLog.setAddCount(addCount); + syncLog.setDeleteCount(deleteCount); + syncLog.setCreateUser(permissionContext.getAuthService().getLoginUser().getName()); + + return this.baseMapper.insert(syncLog) > 0 ? true : false; + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java index e26a6be..876ffc7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java @@ -17,4 +17,6 @@ @Service public class SysOperationLogServiceImpl extends ServiceImpl implements ISysOperationLogService { + + } diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java new file mode 100644 index 0000000..f847fdf --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java @@ -0,0 +1,136 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.casic.missiles.modular.device.service.IBusGridService; +import com.casic.missiles.modular.device.service.IBusLedgerService; +import com.casic.missiles.modular.device.service.ICtUserService; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.DependsOn; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by admin on 2015/1/15. + */ +@DependsOn("taskScheduler") +@RequiredArgsConstructor +@Component +@Transactional +public class CheckingJob { + private static Logger logger = LoggerFactory.getLogger(CheckingJob.class); + + private final IAlarmRecordsService iAlarmRecordsService; + private final ISuspendLogService iSuspendLogService; + private final IApprovalLogService iApprovalLogService; + private final IBusLedgerService iBusLedgerService; + private final ICtUserService iCtUserService; + private final IBusGridService iBusGridService; + + @Value("${casic.enabled}") + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + private boolean enabled = true; + + //更新设备是否离线 + @Scheduled(cron = "0 0 1 * * ?") + public void execute() { + logger.info("开始执行离线告警任务"); + if (!enabled) { + return; + } + try { + iAlarmRecordsService.processOffline(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + //挂起时间到期处理 + @Scheduled(cron = "0 0/5 * * * ?") + public void executeSuspendExpire() { + if (!enabled) { + return; + } + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", new Date()); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + if (suspendLogList != null && suspendLogList.size() > 0) { + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + @Scheduled(cron = "0 0 23 * * ?") + public void executeSyncData() { + logger.info("开始执行全量同步数据任务"); + if (!enabled) { + return; + } + try { + //先同步部门 + iBusLedgerService.synAllDept(); + //同步台账 + iBusLedgerService.synAllLedger(); + //同步用户 + iCtUserService.synAllUsers(); + //同步网格 + iBusGridService.synAllGrids(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + +// TaskScheduler taskScheduler = SpringContextUtil.getApplicationContext().getBean(TaskScheduler.class); + + +// @PostConstruct +// public void scheduleRunnableWithCronTrigger() { +// +// taskScheduler.schedule(new RunnableTask1(), new CronTrigger("0 0/2 * * * *")); +// taskScheduler.schedule(new RunnableTask2(), new CronTrigger("0 0/1 * * * *")); +// } +// +// static class RunnableTask1 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask1现在时间:" + new Date()); +// } +// } +// +// static class RunnableTask2 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask2现在时间:" + new Date()); +// } +// } + +} \ No newline at end of file diff --git a/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java new file mode 100644 index 0000000..8ad95dc --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java @@ -0,0 +1,51 @@ +package com.casic.missiles.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +import javax.annotation.Resource; + +@Resource +public class SnowFlakeUtil { + private long machineId ; + private long dataCenterId ; + + + public SnowFlakeUtil(long machineId, long dataCenterId) { + this.machineId = machineId; + this.dataCenterId = dataCenterId; + } + + /** + * 成员类,SnowFlakeUtil的实例对象的保存域 + */ + private static class IdGenHolder { + private static final SnowFlakeUtil instance = new SnowFlakeUtil(); + } + + /** + * 外部调用获取SnowFlakeUtil的实例对象,确保不可变 + */ + public static SnowFlakeUtil get() { + return IdGenHolder.instance; + } + + /** + * 初始化构造,无参构造有参函数,默认节点都是0 + */ + public SnowFlakeUtil() { + this(0L, 0L); + } + + private Snowflake snowflake = IdUtil.createSnowflake(machineId,dataCenterId); + + public synchronized long id(){ + return snowflake.nextId(); + } + + public static Long getId() { + return SnowFlakeUtil.get().id(); + } +} + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java index ce8992b..03cb6a3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java @@ -65,7 +65,7 @@ //策略配置 .strategyConfig(builder -> { - builder.addInclude("sys_role") // 设置需要生成的表名 + builder.addInclude("sync_log","sync_log_detail") // 设置需要生成的表名 .addTablePrefix() // 设置过滤表前缀 .entityBuilder() //实体类配置 .enableLombok() //使用lombok diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 739eb99..02264b7 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -6,6 +6,7 @@ import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; /** @@ -18,6 +19,7 @@ @EnableCaching @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync +@EnableScheduling @Slf4j public class CasicApplication { public static void main(String[] args) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java new file mode 100644 index 0000000..d2242c6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.SyncLogDetailMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Service +public class SyncLogDetailServiceImpl extends ServiceImpl implements ISyncLogDetailService { + + @Override + public boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent) { + + SyncLogDetail syncLogDetail = new SyncLogDetail(); + syncLogDetail.setSyncLogId(syncId); + syncLogDetail.setAddContent(addContent); + syncLogDetail.setUpdateContent(updateContent); + syncLogDetail.setDeleteContent(deleteContent); + return this.baseMapper.insert(syncLogDetail) > 0 ? true : false; + } + + @Override + public List getListBySyncId(Long syncId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("SYNC_LOG_ID", syncId); + return this.list(queryWrapper); + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java new file mode 100644 index 0000000..24afe4e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.device.dao.SyncLogMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RequiredArgsConstructor +@Service +public class SyncLogServiceImpl extends ServiceImpl implements ISyncLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSyncLogs(Long id, Date startTime, Date endTime, String syncType, String updateCount, String deleteCount, String addCount) { + + SyncLog syncLog = new SyncLog(); + syncLog.setId(id); + syncLog.setStartTime(startTime); + syncLog.setEndTime(endTime); + syncLog.setSyncType(syncType); + syncLog.setUpdateCount(updateCount); + syncLog.setAddCount(addCount); + syncLog.setDeleteCount(deleteCount); + syncLog.setCreateUser(permissionContext.getAuthService().getLoginUser().getName()); + + return this.baseMapper.insert(syncLog) > 0 ? true : false; + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java index e26a6be..876ffc7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java @@ -17,4 +17,6 @@ @Service public class SysOperationLogServiceImpl extends ServiceImpl implements ISysOperationLogService { + + } diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java new file mode 100644 index 0000000..f847fdf --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java @@ -0,0 +1,136 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.casic.missiles.modular.device.service.IBusGridService; +import com.casic.missiles.modular.device.service.IBusLedgerService; +import com.casic.missiles.modular.device.service.ICtUserService; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.DependsOn; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by admin on 2015/1/15. + */ +@DependsOn("taskScheduler") +@RequiredArgsConstructor +@Component +@Transactional +public class CheckingJob { + private static Logger logger = LoggerFactory.getLogger(CheckingJob.class); + + private final IAlarmRecordsService iAlarmRecordsService; + private final ISuspendLogService iSuspendLogService; + private final IApprovalLogService iApprovalLogService; + private final IBusLedgerService iBusLedgerService; + private final ICtUserService iCtUserService; + private final IBusGridService iBusGridService; + + @Value("${casic.enabled}") + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + private boolean enabled = true; + + //更新设备是否离线 + @Scheduled(cron = "0 0 1 * * ?") + public void execute() { + logger.info("开始执行离线告警任务"); + if (!enabled) { + return; + } + try { + iAlarmRecordsService.processOffline(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + //挂起时间到期处理 + @Scheduled(cron = "0 0/5 * * * ?") + public void executeSuspendExpire() { + if (!enabled) { + return; + } + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", new Date()); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + if (suspendLogList != null && suspendLogList.size() > 0) { + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + @Scheduled(cron = "0 0 23 * * ?") + public void executeSyncData() { + logger.info("开始执行全量同步数据任务"); + if (!enabled) { + return; + } + try { + //先同步部门 + iBusLedgerService.synAllDept(); + //同步台账 + iBusLedgerService.synAllLedger(); + //同步用户 + iCtUserService.synAllUsers(); + //同步网格 + iBusGridService.synAllGrids(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + +// TaskScheduler taskScheduler = SpringContextUtil.getApplicationContext().getBean(TaskScheduler.class); + + +// @PostConstruct +// public void scheduleRunnableWithCronTrigger() { +// +// taskScheduler.schedule(new RunnableTask1(), new CronTrigger("0 0/2 * * * *")); +// taskScheduler.schedule(new RunnableTask2(), new CronTrigger("0 0/1 * * * *")); +// } +// +// static class RunnableTask1 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask1现在时间:" + new Date()); +// } +// } +// +// static class RunnableTask2 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask2现在时间:" + new Date()); +// } +// } + +} \ No newline at end of file diff --git a/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java new file mode 100644 index 0000000..8ad95dc --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java @@ -0,0 +1,51 @@ +package com.casic.missiles.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +import javax.annotation.Resource; + +@Resource +public class SnowFlakeUtil { + private long machineId ; + private long dataCenterId ; + + + public SnowFlakeUtil(long machineId, long dataCenterId) { + this.machineId = machineId; + this.dataCenterId = dataCenterId; + } + + /** + * 成员类,SnowFlakeUtil的实例对象的保存域 + */ + private static class IdGenHolder { + private static final SnowFlakeUtil instance = new SnowFlakeUtil(); + } + + /** + * 外部调用获取SnowFlakeUtil的实例对象,确保不可变 + */ + public static SnowFlakeUtil get() { + return IdGenHolder.instance; + } + + /** + * 初始化构造,无参构造有参函数,默认节点都是0 + */ + public SnowFlakeUtil() { + this(0L, 0L); + } + + private Snowflake snowflake = IdUtil.createSnowflake(machineId,dataCenterId); + + public synchronized long id(){ + return snowflake.nextId(); + } + + public static Long getId() { + return SnowFlakeUtil.get().id(); + } +} + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java index ce8992b..03cb6a3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java @@ -65,7 +65,7 @@ //策略配置 .strategyConfig(builder -> { - builder.addInclude("sys_role") // 设置需要生成的表名 + builder.addInclude("sync_log","sync_log_detail") // 设置需要生成的表名 .addTablePrefix() // 设置过滤表前缀 .entityBuilder() //实体类配置 .enableLombok() //使用lombok diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 739eb99..02264b7 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -6,6 +6,7 @@ import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; /** @@ -18,6 +19,7 @@ @EnableCaching @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync +@EnableScheduling @Slf4j public class CasicApplication { public static void main(String[] args) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8e43996..5c71b48 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -22,7 +22,7 @@ redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/webjars/**,/device/receiveData,/alarmReturn,/getMap,/system/busGrid/synAllGrids,/system/busLedger/synAllLedger,/system/busLedger/synAllDept,/system/ctUser/synAllUsers + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/webjars/**,/device/receiveData,/alarmReturn,/getMap,/system/busGrid/synAllGrids,/system/busLedger/synAllLedger,/system/busLedger/synAllDept,/system/ctUser/synAllUsers,/sync/token #flowable数据源和多数据源配置 db: init: @@ -31,7 +31,7 @@ brPanGetDevcodeUrl: http://172.17.240.116:9092/ranshitong/device/getOneDevice brPanControlUrl: http://172.17.240.116:9092/HkController/controCearm brPanVideoUrl: http://172.17.240.116:9092/HkController/getPlayBackUrl - + enabled: true smartcity: config: #模板下载路径 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index 56b1b4c..deb4852 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -185,6 +185,14 @@ return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); } + + @ApiOperation("跳转获取设备编号") + @PostMapping("/getDeviceCodeByTagNumber") + @ResponseBody + public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java index 97a9fd0..8521d28 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmEventProductMapper.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.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; 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,8 @@ @Mapper public interface AlarmEventProductMapper extends BaseMapper { + @Select("SELECT EVENT_NAME FROM `alarm_event_product` where EVENT_CODE = #{evenCode} limit 1") + String getEventName(@Param("evenCode") String evenCode); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 215cc71..39a5e66 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -44,7 +44,7 @@ DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); - void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value); + void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell, @Param("value") String value, @Param("alarmContent") String alarmContent); void updateWellStatus(@Param("tagNumber") String tagNumber,@Param("onLineStatus") String onLineStatus); @@ -59,4 +59,8 @@ List> viewPlace(@Param("request") TrackRequestDTO request); List getOfflineDevices(); + + String getDeviceCodeByTagNumber(); + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 7c4f4a3..ff6943e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -21,7 +21,7 @@ @Mapper public interface ApprovalLogMapper extends BaseMapper { - @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 113b910..6a4d292 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -508,7 +508,8 @@ lr.propertyOwner, lr.id as ledgerId, lr.type as watchObject, - ay.ALARM_CATEGORY as alarmCategory + ay.ALARM_CATEGORY as alarmCategory, + bg.PRINCIPAL as personName FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE AND bd.valid > 0 LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID @@ -520,6 +521,8 @@ AND lr.VALID = 1 LEFT JOIN alarm_type ay on ay.id = rd.ALARM_TYPE_ID + LEFT JOIN + bus_grid bg on lr.DEPTID=bg.DEPTID WHERE rd.STATUS = 1 and rd.ID = #{id} limit 1 @@ -529,13 +532,18 @@ @@ -785,6 +799,7 @@ set CELL = #{cell}, ONLINE_STATE = #{onLineStatus}, MONITOR_VALUE = #{value}, + MONITOR_CONTENT = #{alarmContent}, LOGTIME = now() where DEVCODE = #{devCode} and valid > 0 @@ -807,4 +822,11 @@ SELECT su.ACCOUNT,su.`NAME` as personName,su.PHONE as telephone FROM `sys_user` su where DEPT_ID = #{id} + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index 3bacde5..ba53009 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -64,7 +64,6 @@ and bp.ID =#{request.productId} - ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml index 6062be7..7f7aec6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmTypeMapper.xml @@ -24,12 +24,14 @@ t.ALARM_CATEGORY, t.ALARM_TYPE, bt.TYPE_NAME AS deviceTypeName, - bt.id as deviceTypeIds + bt.id as deviceTypeIds, + t.ENABLED FROM alarm_type t LEFT JOIN alarm_type_devicetype ad ON t.ID = ad.ALARM_TYPE_ID LEFT JOIN base_device_type bt ON bt.ID = ad.DEVICE_TYPE) select att.id, + att.ENABLED, att.ALARM_CATEGORY, att.ALARM_TYPE,GROUP_CONCAT(att.deviceTypeName) AS deviceTypeName, GROUP_CONCAT(att.deviceTypeIds) as deviceTypeIdStrs diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index fc36edc..430f37c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -81,7 +81,8 @@ GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker, + bv.id as ledgerid FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index 05d57e5..1cf4aca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -41,4 +41,7 @@ @ApiModelProperty("标签") private String marker; + @ApiModelProperty("台账id") + private Long ledgerid; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java index 57b7932..e938da8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/OffDeviceDTO.java @@ -2,6 +2,8 @@ import lombok.Data; +import java.util.Date; + @Data public class OffDeviceDTO { @@ -11,10 +13,14 @@ private String tagNumber; private String ledgerCode; private String place; + //台账类型 + private String type; private Long alarmTypeId; private String alarmTypeName; private String alarmThreshold; private Long alarmLevelId; + private Date logtime; + private Integer offDays; } 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 b1b47f2..88238cb 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 @@ -158,12 +158,13 @@ public AlarmRecords() { } - public AlarmRecords(String devcode, String ledgerCode, + public AlarmRecords(Long id,String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, String alarmValue, Long alarmLevel, Date alarmTime, String alarmMsg, String position, String exceptionType) { + this.id=id; this.devcode = devcode; this.ledgerCode = ledgerCode; this.ledgerNumber = ledgerNumber; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 61094ff..2bbceb1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -69,6 +69,10 @@ @TableField("DESCRIPTION") private String description; + @ApiModelProperty("离线天数") + @TableField("OFF_DAYS") + private Integer offDays; + @ApiModelProperty("时间戳") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java index e1a1c19..aa08ef6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmType.java @@ -45,6 +45,10 @@ @TableField("ALARM_TYPE") private String alarmType; + @ApiModelProperty("是否启用:1启用 0 未启用") + @TableField("ENABLED") + private String enabled; + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java index 37cda91..ed4607c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmEventProductService.java @@ -17,4 +17,6 @@ List alarmEventList(Long productId); + String getEventName(String evenCode); + } 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 ab54bce..5060ecf 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 @@ -56,6 +56,8 @@ List getPrincipals(Long id); + String getDeviceCodeByTagNumber(AlarmRecordDTO request); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); @@ -72,7 +74,7 @@ void processOffline(); - void updateCell(String devCode, String onLineStatus, String cell, String value); + void updateCell(String devCode, String onLineStatus, String cell, String value,String alarmContent); void updateWellStatus(String tagNumber, String onLineStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java index a7bc4d2..f1bbc8b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmEventProductServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmEventProductMapper; @@ -23,7 +24,12 @@ @Override public List alarmEventList(Long productId) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("PRODUCT_ID", productId); + queryWrapper.eq(ObjectUtil.isNotEmpty(productId),"PRODUCT_ID", productId); return this.list(queryWrapper); } + + @Override + public String getEventName(String evenCode) { + return this.baseMapper.getEventName(evenCode); + } } 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 ae2e949..1ad6294 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 @@ -21,16 +21,17 @@ import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.*; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.modular.device.service.IBusLedgerPipeService; +import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; -import com.casic.missiles.util.HttpClientUtils; -import com.casic.missiles.util.PoolConfig; -import com.casic.missiles.util.WebSocket; +import com.casic.missiles.util.*; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; +import static cn.hutool.core.date.DateUnit.DAY; import static com.casic.missiles.util.TimeConvertUtil.TimeConverter; /** @@ -64,6 +66,10 @@ private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; private final CommonServer commonServer; + private final IBusDeviceService iBusDeviceService; + private final IBusLedgerService iBusLedgerService; + private final IBusLedgerPipeService iBusLedgerPipeService; + private final IAlarmEventProductService iAlarmEventProductService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -87,7 +93,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()) : ""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +135,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()) : ""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -148,16 +154,15 @@ @Override public List getPrincipals(Long id) { - Map resultMap = new HashMap<>(); + Map resultMap = new HashMap<>(); Dept dept = abstractDeptService.getById(id); - if(dept!=null){ - if("grid".equals(dept.getTips())){ - List principalDTOList = this.baseMapper.getPrincipals(id); - resultMap.put("grid",principalDTOList); - if(null!=dept.getPid()){ + if (dept != null) { + if ("grid".equals(dept.getTips())) { + List principalDTOList = this.baseMapper.getPrincipals(id); + resultMap.put("grid", principalDTOList); + if (null != dept.getPid()) { } - } } @@ -170,7 +175,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()) : ""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +196,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid()) ? commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()) : ""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -228,8 +233,8 @@ } resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); - resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID"))&&CommonUtil.isNumber(resultMap.get("DEPTID").toString())? - commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())):""); + resultMap.put("deptName", ObjectUtil.isNotEmpty(resultMap.get("DEPTID")) && CommonUtil.isNumber(resultMap.get("DEPTID").toString()) ? + commonServer.getDeptNamesByDeptId(Long.valueOf(resultMap.get("DEPTID").toString())) : ""); //0:自有,1:自管 resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); //设置确认上个处置内容 @@ -491,7 +496,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()) : ""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; @@ -587,10 +592,11 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId = 0L; + + Long alarmId = SnowFlakeUtil.getId(); for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { - AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), + AlarmRecords alarmRecords = new AlarmRecords(alarmId, devCode, busLedgerDTO.getLedgerCode(), busLedgerDTO.getTagNumber(), alarmRuleResponseDTO.getAlarmTypeId(), "燃气浓度达到".concat(data).concat("%LEL"), data, alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), @@ -638,6 +644,9 @@ @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { + if (ObjectUtil.isNotEmpty(alarmRuleResponseDTO.get().getAlarmThreshold())) { + alarmRuleResponseDTO.get().setAlarmTypeName(iAlarmEventProductService.getEventName(alarmRuleResponseDTO.get().getAlarmThreshold())); + } for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -689,14 +698,14 @@ } /** - * 更新电量、最新状态时间、设备状态 + * 更新电量、最新状态时间、设备状态、报警内容 * * @param devCode * @param cell */ @Override - public void updateCell(String devCode, String onLineStatus, String cell, String value) { - this.baseMapper.updateCell(devCode, onLineStatus, cell, value); + public void updateCell(String devCode, String onLineStatus, String cell, String value, String alarmContent) { + this.baseMapper.updateCell(devCode, onLineStatus, cell, value, alarmContent); } @Override @@ -709,15 +718,39 @@ this.baseMapper.updatePipeStatus(tagNumber, onLineStatus); } + @Override + public String getDeviceCodeByTagNumber(AlarmRecordDTO request) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("LEDGER_NUMBER", request.getLedgerNumber()); + queryWrapper.ge("ALARM_TIME", request.getBegTime()); + queryWrapper.le("ALARM_TIME", request.getEndTime()); + queryWrapper.orderByDesc("ALARM_TIME"); + List alarmRecordsList = this.baseMapper.selectList(queryWrapper); + return alarmRecordsList != null && alarmRecordsList.size() > 0 ? alarmRecordsList.get(0).getDevcode() : ""; + } + /** * 更新离线异常 */ + @Transactional @Override public void processOffline() { //注意:报警类型一律为“OffLine” List offDeviceDTOList = this.baseMapper.getOfflineDevices(); List alarmRecordsList = new ArrayList<>(); + List ledgers = new ArrayList<>(); for (OffDeviceDTO offDeviceDTO : offDeviceDTOList) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getLogtime())) { + if (ObjectUtil.isNotEmpty(offDeviceDTO.getOffDays())) { + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < offDeviceDTO.getOffDays()) + continue; + } else { + //默认7天 + if (DateUtil.between(offDeviceDTO.getLogtime(), new Date(), DAY, false) < 7) + continue; + } + } + AlarmRecords alarmRecords = new AlarmRecords(offDeviceDTO.getDevcode(), offDeviceDTO.getLedgerCode(), offDeviceDTO.getTagNumber(), @@ -728,8 +761,22 @@ offDeviceDTO.getAlarmThreshold(), offDeviceDTO.getPlace(), "1"); alarmRecordsList.add(alarmRecords); + ledgers.add(offDeviceDTO); } - this.saveBatch(alarmRecordsList); - //toDo:需添加离线分析记录 + if (alarmRecordsList.size() > 0) { + this.saveBatch(alarmRecordsList); + + //更新设备表状态 + List devcodeStrs = alarmRecordsList.stream().map(AlarmRecords::getDevcode).distinct().collect(Collectors.toList()); + iBusDeviceService.updateBusDeviceStatus(devcodeStrs); + //更新点位表 + List ledgerCodes = ledgers.stream().filter(offDeviceDTO -> "1".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getLedgerCode).distinct().collect(Collectors.toList()); + if (ledgerCodes != null && ledgerCodes.size() > 0) + iBusLedgerService.updateLedgerStatus(ledgerCodes); + List ledgerPipeCodes = ledgers.stream().filter(offDeviceDTO -> "3".equals(offDeviceDTO.getType())).map(OffDeviceDTO::getTagNumber).distinct().collect(Collectors.toList()); + if (ledgerPipeCodes != null && ledgerPipeCodes.size() > 0) + iBusLedgerPipeService.updateMonitorStatus(ledgerPipeCodes); + //toDo:需添加离线分析记录 + } } } 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 1d9a090..b84fc54 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 @@ -1,17 +1,22 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.AlarmRuleMapper; import com.casic.missiles.modular.alarm.dto.AlarmDeviceRuleResponseDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleRequestDTO; import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.entity.AlarmEventProduct; import com.casic.missiles.modular.alarm.entity.AlarmRule; import com.casic.missiles.modular.alarm.entity.AlarmRuleDevice; import com.casic.missiles.modular.alarm.entity.AlarmType; +import com.casic.missiles.modular.alarm.service.IAlarmEventProductService; import com.casic.missiles.modular.alarm.service.IAlarmRuleDeviceService; import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ private final IAlarmRuleDeviceService iAlarmRuleDeviceService; private final IAlarmTypeService iAlarmTypeService; + private final IAlarmEventProductService eventProductService; @Transactional @Override @@ -51,8 +57,20 @@ @Override public Page pageList(Page page, AlarmRuleRequestDTO request) { - - return this.baseMapper.pageList(page, request); + List alarmEventProductList = eventProductService.alarmEventList(null); + Page alarmRulePage = this.baseMapper.pageList(page, request); + List alarmRuleList = alarmRulePage.getRecords(); + alarmRuleList.forEach(alarmRule -> { + if ("0".equals(alarmRule.getAlarmJudgeMethod())) { + alarmEventProductList.forEach(alarmEventProduct -> { + if (ObjectUtil.equals(alarmRule.getProductId(), alarmEventProduct.getProductId()) && + ObjectUtil.equals(alarmRule.getAlarmThreshold(), alarmEventProduct.getEventCode())) { + alarmRule.setAlarmThreshold(alarmEventProduct.getEventName()); + } + }); + } + }); + return alarmRulePage; } @Transactional @@ -93,9 +111,9 @@ alarmRuleResponseDTO.setAlarmThreshold(alarmRuleDevice.getAlarmThreshold()); alarmRuleResponseDTO.setAlarmLevelId(alarmRuleDevice.getAlarmLevelId()); alarmRuleResponseDTO.setAlarmTypeId(alarmRuleDevice.getAlarmTypeId()); - if(null!=alarmRuleDevice.getAlarmTypeId()){ + if (null != alarmRuleDevice.getAlarmTypeId()) { AlarmType alarmType = iAlarmTypeService.getById(alarmRuleDevice.getAlarmTypeId()); - alarmRuleResponseDTO.setAlarmTypeName(alarmType!=null?alarmType.getAlarmType():""); + alarmRuleResponseDTO.setAlarmTypeName(alarmType != null ? alarmType.getAlarmType() : ""); } alarmRuleResponseDTOS.add(alarmRuleResponseDTO); } 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 619b7c9..ef41f01 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 @@ -168,6 +168,7 @@ if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { alarmFlag =true; + //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { @@ -182,7 +183,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java index d1dc1e3..d248540 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasliquidGasServiceImpl.java @@ -197,7 +197,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及设备状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java index 6e57cc9..e848fce 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataMonitorPipeOtherServiceImpl.java @@ -213,7 +213,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, CH4L + "," + CH4R,alarmFlag?"燃气浓度达到".concat(CH4L).concat(",").concat(CH4R).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index eccca85..6f9fe3b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -126,7 +126,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新监测井状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java index da44c66..f913775 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataTubeOtherServiceImpl.java @@ -186,7 +186,7 @@ alarmRecordsService.cancelDataAlarm(devCode); } //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell, gas,alarmFlag?"燃气浓度达到".concat(gas).concat("%LEL"):""); //7.更新管线状态 (1:正常,2:报警) if (busWellDTOList != null && busWellDTOList.size() > 0) { alarmRecordsService.updatePipeStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); 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 b86572f..9e412d2 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,12 +1,13 @@ 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.BusLedgerPipeRequestDTO; import com.casic.missiles.modular.device.entity.BusLedgerPipe; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; @@ -16,6 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.Objects; + /** *

* 台账管理 前端控制器 @@ -31,7 +34,7 @@ public class BusLedgerPipeController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("新建点位") @PostMapping("/addPosition") @@ -41,6 +44,15 @@ return ReturnUtil.success(busLedgerPipe.getId()); } + @ApiOperation("编辑点位") + @PostMapping("/editPosition") + @ResponseBody + public ReturnDTO editPosition(@RequestBody BusLedgerPipe busLedgerPipe) { + Assert.isFalse(Objects.isNull(busLedgerPipe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iBusLedgerPipeService.updateById(busLedgerPipe)); + } @ApiOperation("分页列表查询") @PostMapping("/listPage") @@ -51,6 +63,5 @@ return ReturnUtil.success(super.packForBT(iBusLedgerPipeService.listPage(page, busLedgerPipeRequestDTO))); } - } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java new file mode 100644 index 0000000..4f5d9d3 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogController.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +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.BusSyncLogDTO; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; +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; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Api(tags = "同步日志管理模块") +@RestController +@RequiredArgsConstructor +@RequestMapping("/system/syncLog") +public class SyncLogController extends ExportController { + + + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; + + @ApiOperation("查询分页接口") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO listPage(@RequestBody BusSyncLogDTO request) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(request.getOperatorName()), "CREATE_USER", request.getOperatorName()); + queryWrapper.ge(ObjectUtil.isNotEmpty(request.getStartTime()), "START_TIME", request.getStartTime()); + queryWrapper.le(ObjectUtil.isNotEmpty(request.getEndTime()), "END_TIME", request.getEndTime()); + return ReturnUtil.success(super.packForBT(iSyncLogService.page(page, queryWrapper))); + } + + @ApiOperation("查看") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO detail(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iSyncLogDetailService.getListBySyncId(idDTO.getId())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java new file mode 100644 index 0000000..bb857a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncLogDetailController.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 提醒记录 前端控制器 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RestController +@RequestMapping("/system/syncLogDetail") +public class SyncLogDetailController { + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java new file mode 100644 index 0000000..bde8f6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/SyncMockController.java @@ -0,0 +1,133 @@ +package com.casic.missiles.modular.device.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.Const; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.domain.constants.PermissionConstants; +import com.casic.missiles.modular.interfaces.log.LogManager; +import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; +import com.casic.missiles.modular.system.model.User; +import com.casic.missiles.util.ReturnUtil; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.security.NoSuchAlgorithmException; +import java.util.Map; + + +@RestController +public class SyncMockController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(SyncMockController.class); + + @Autowired + private CasicProperties casicProperties; + @Autowired + private AbstractPermissionContext permissionContext; + + + /** + * 单点登录 + * + * @param code authorization_code + * @return 本系统token + */ + @RequestMapping(value = "/sync/token") + @ResponseBody + public Object code2token(String code) { + // getToken +// Map tokenParams = new HashMap<>(); +// tokenParams.put("client_id",configProperties.getClientId()); +// tokenParams.put("client_secret",configProperties.getClientSecert()); +// tokenParams.put("code",code); +// tokenParams.put("grant_type","authorization_code"); +// String tokenRes = HttpUtils.sendGet(configProperties.getTokenUrl(), tokenParams, permissionService.getShiroSession().getId().toString()); +// JSONObject authToken = JSONObject.parseObject(tokenRes); +// if(ObjectUtil.isNotEmpty(authToken.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + // getUserInfo +// Map userParams = new HashMap<>(); +// userParams.put("client_id",configProperties.getClientId()); +// userParams.put("access_token",authToken.getString("access_token")); +// userParams.put("uid",authToken.getString("uid")); +// String userRes = HttpUtils.sendGet(configProperties.getUserInfoUrl(), userParams, permissionService.getShiroSession().getId().toString()); +// JSONObject userInfo = JSONObject.parseObject(userRes); +// if(ObjectUtil.isNotEmpty(userInfo.get("errcode"))){ +// return ReturnUtil.failed(authToken.getString("msg")); +// } + + try { + String loginName = RSAUtils.encrypt(code,"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB"); + System.out.println("**********"+loginName); + } catch (Exception e) { + e.printStackTrace(); + } + + + // login + logger.info("receive code " + code); + try { + + Map key = RSAUtils.genKeyPair(); + ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey)); + super.getSession().setAttribute(PermissionConstants.IS_APP, false); + String privateKey = casicProperties.getRsaPrivateKey(); + String loginName = ""; + try { + loginName = RSAUtils.decrypt(code, privateKey); + } catch (Exception e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("解密失败"); + } + if (ObjectUtil.isEmpty(loginName)) { + return ReturnUtil.failed("用户名不能为空"); + } + + + User user = permissionContext.getUserService().getUserByAccount(loginName,"1"); + if (ObjectUtil.isEmpty(user)) { + return ReturnUtil.failed(402, "该账户暂未同步,请联系管理员"); + } + //查询用户名密码 + UsernamePasswordToken token = new UsernamePasswordToken(user.getAccount(), Const.DEFAULT_PWD.toCharArray()); + token.setRememberMe(false); + Subject currentUser = ShiroKit.getSubject(); + currentUser.login(token); + AuthUser shiroUser = ShiroKit.getUser(); + super.getSession().setAttribute("shiroUser", shiroUser); + super.getSession().setAttribute("username", shiroUser.getAccount()); + String devId = null; + if (ObjectUtil.isNotEmpty(shiroUser.getDevices())) { + devId = shiroUser.getDevices().get(0).getImei(); + } + super.getSession().setAttribute("sessionFlag", true); + super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); + LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), devId)); + String tokenId = ShiroKit.getSession().getId().toString(); + return ReturnUtil.success(tokenId); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("生成密钥失败"); + } catch (AuthenticationException e) { + e.printStackTrace(); + logger.error(e.getMessage()); + return ReturnUtil.failed("用户名或密码错误"); + } + } + + +} 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 5261ba1..7c227d7 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 @@ -29,10 +29,14 @@ List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); - @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE FROM bus_device bd where " + + @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE,bd.MONITOR_VALUE,bd.ONLINE_STATE,bd.MONITOR_CONTENT, " + + "IF( bd.ONLINE_STATE = '0', IF ( bd.LOGTIME != NULL, bd.LOGTIME, bd.INSTALL_DATE ), '' ) AS offDate "+ + " FROM bus_device bd where " + " EXISTS (SELECT 1 from bus_device_ledger bl where bl.DEVICE_ID= bd.id and bl.LEDGER_ID=${ledgerId} and bl.VALID=1)) " + " SELECT device.devcode , " + - " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") + " device.DEVICE_TYPE as devTypeId,sd.TYPE_NAME as devTypeName,device.MONITOR_VALUE as latestValue,device.ONLINE_STATE as state,device.MONITOR_CONTENT AS alarmContent, " + + " TIMESTAMPDIFF(DAY, device.offDate , NOW()) as offDays "+ + " FROM device_tmp device LEFT JOIN base_device_type sd on sd.ID= device.DEVICE_TYPE") List getDeviceList(@Param("ledgerId") Long ledgerId); List> getWatchData(@Param("tableName") String tableName, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java new file mode 100644 index 0000000..422ce54 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogDetailMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogDetailMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java new file mode 100644 index 0000000..fea6bd6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/SyncLogMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.device.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 提醒记录 Mapper 接口 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Mapper +public interface SyncLogMapper extends BaseMapper { + +} 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 aa6c790..37d45fd 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 @@ -91,9 +91,13 @@ 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 3011a5c..bdadb6a 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 @@ -39,12 +39,12 @@ FROM `bus_ledger_pipe` blp LEFT JOIN bus_pipeline bp ON blp.PIPE_CODE = bp.PIPE_CODE - LEFT JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID + JOIN bus_device_ledger bdl ON bdl.LEDGER_ID = blp.ID AND bdl.TYPE = 3 AND bdl.VALID = 1 - LEFT JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID + JOIN bus_device bd ON bd.ID = bdl.DEVICE_ID AND bd.VALID = 1 - LEFT JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE + JOIN base_device_type bt ON bt.ID = bd.DEVICE_TYPE and bd.DEVCODE like concat('%', #{request.devCode}, '%') @@ -74,6 +74,9 @@ and blp.MONITOR_STATE =#{request.monitorState} + + and bt.ID =#{request.devTypeId} + ORDER BY blp.TS DESC @@ -127,8 +130,8 @@ FROM device_temp dt LEFT JOIN base_device_type bt ON bt.id = dt.DEVICE_TYPE - LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 - LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 + JOIN bus_device_ledger bl ON bl.DEVICE_ID = dt.id AND bl.type = 3 AND bl.VALID = 1 + JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml new file mode 100644 index 0000000..9c0337a --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogDetailMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + ID + , SYNC_LOG_ID, UPDATE_CONTENT, DELETE_CONTENT, ADD_CONTENT + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml new file mode 100644 index 0000000..7a85684 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/SyncLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID, SYNC_LOG, SYNC_RESULT, UPDATE_COUNT, DELETE_COUNT, ADD_COUNT, CREATE_USER, START_TIME, END_TIME + + + 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 index 36dc4e1..29f11e9 100644 --- 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 @@ -39,4 +39,7 @@ @ApiModelProperty("设备名称") private String devName; + @ApiModelProperty("设备类型id") + private Long devTypeId; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java new file mode 100644 index 0000000..13cf691 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusSyncLogDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class BusSyncLogDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("操作人名称") + private String operatorName; + + @ApiModelProperty("开始时间") + private String startTime; + + @ApiModelProperty("结束时间") + private String endTime; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java index 71b57ea..a0e8b34 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceMonitorDTO.java @@ -21,5 +21,9 @@ @ApiModelProperty("最新监测值") private String latestValue; + @ApiModelProperty("离线天数") + private String offDays; + @ApiModelProperty("异常原因") + private String alarmContent; } 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 a19db7d..163f4d8 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 @@ -192,4 +192,12 @@ @TableField(exist = false) private String buriedName; + @ApiModelProperty("负责人") + @TableField(exist = false) + private String personName; + + @ApiModelProperty("负责人电话") + @TableField(exist = false) + private String telephone; + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java new file mode 100644 index 0000000..7c4ae15 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLog.java @@ -0,0 +1,67 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log") +@ApiModel(value = "SyncLog对象", description = "提醒记录") +public class SyncLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步类型") + @TableField("SYNC_TYPE") + private String syncType; + + @ApiModelProperty("同步结果") + @TableField("SYNC_RESULT") + private String syncResult; + + @ApiModelProperty("更新数量") + @TableField("UPDATE_COUNT") + private String updateCount; + + @ApiModelProperty("删除数量") + @TableField("DELETE_COUNT") + private String deleteCount; + + @ApiModelProperty("新增数量") + @TableField("ADD_COUNT") + private String addCount; + + @ApiModelProperty("操作人") + @TableField("CREATE_USER") + private String createUser; + + @ApiModelProperty("开始时间") + @TableField("START_TIME") + private Date startTime; + + @ApiModelProperty("结束时间") + @TableField("END_TIME") + private Date endTime; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java new file mode 100644 index 0000000..f8d23d9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/SyncLogDetail.java @@ -0,0 +1,50 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + *

+ * 提醒记录 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Getter +@Setter +@TableName("sync_log_detail") +@ApiModel(value = "SyncLogDetail对象", description = "提醒记录") +public class SyncLogDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId("ID") + private Long id; + + @ApiModelProperty("同步主键id") + @TableField("SYNC_LOG_ID") + private Long syncLogId; + + @ApiModelProperty("更新内容") + @TableField("UPDATE_CONTENT") + private String updateContent; + + @ApiModelProperty("删除内容") + @TableField("DELETE_CONTENT") + private String deleteContent; + + @ApiModelProperty("新增内容") + @TableField("ADD_CONTENT") + private String addContent; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java index 65fb3ab..aaaa409 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceService.java @@ -28,6 +28,8 @@ boolean updateBusDevice(BusDevice busDevice); + boolean updateBusDeviceStatus(List devcodes); + boolean bfcf(BusDeviceBfcfDTO bfcfDTO); boolean syncDeviceStatus(); 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 5ecb50d..14f6a93 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 @@ -36,5 +36,7 @@ BusLedgerPipe saveBusLedgerPipe(BusLedgerPipe busLedgerPipe); + Boolean updateMonitorStatus(List tagNumbers); + } 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 d6f42b2..4a63d1a 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 @@ -41,5 +41,7 @@ boolean synAllLedger(); + boolean updateLedgerStatus(List ledgerCodes); + } 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 4fef87c..e67e630 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 @@ -3,10 +3,7 @@ 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.dto.DeviceMonitorRequestDTO; -import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; -import com.casic.missiles.modular.device.dto.WellMapDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; @@ -29,7 +26,7 @@ Map>> watchDataByWell(DeviceMonitorRequestDTO requestDTO); - Map> latestValue(DeviceMonitorRequestDTO requestDTO); + List latestValue(DeviceMonitorRequestDTO requestDTO); List lifecycleRecord(DeviceMonitorRequestDTO requestDTO); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java new file mode 100644 index 0000000..580260b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogDetailService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLogDetail; + +import java.util.List; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogDetailService extends IService { + + boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent); + + List getListBySyncId(Long syncId); +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java new file mode 100644 index 0000000..c2de811 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISyncLogService.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.SyncLog; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +public interface ISyncLogService extends IService { + + boolean saveSyncLogs(Long id,Date startTime,Date endTime,String syncType, + String updateCount,String deleteCount, String addCount); + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java index c0878b0..ff7f8e3 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/ISysOperationLogService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.device.entity.SysOperationLog; +import java.util.Date; + /** *

* 操作日志 服务类 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 610fdf6..bb722a6 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -5,11 +5,15 @@ 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.service.AbstractDictService; import com.casic.missiles.core.base.service.IBaseExportService; -import com.casic.missiles.enums.*; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.DeviceDataEnum; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.device.dao.BusDeviceMapper; import com.casic.missiles.modular.device.dto.*; @@ -273,6 +277,8 @@ } } } + if (ObjectUtil.isEmpty(busDevice.getInstallDate())) + busDevice.setInstallDate(null); return this.updateById(busDevice); } @@ -321,14 +327,15 @@ } }); //若安装位号不为空时,检查是否存在或者新增 - if (ObjectUtil.isAllNotEmpty(deviceImportDTO.getTagNumber())) { + if (ObjectUtil.isNotEmpty(deviceImportDTO.getTagNumber())) { if (ObjectUtil.isEmpty(deviceImportDTO.getPosition())) { // List ledgerIds = iBusLedgerService.ledgerIdsByTagNumber(deviceImportDTO.getTagNumber(), deviceImportDTO.getWatchObject(), deviceImportDTO.getDeptid()); List ledgerIds = new ArrayList<>(); busLedgerDTOList.forEach(busLedgerDTO -> { if (deviceImportDTO.getTagNumber().equals(busLedgerDTO.getTagNumber()) && - deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) && - deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid())) { + deviceImportDTO.getWatchObject().equals(busLedgerDTO.getType()) +// && deviceImportDTO.getDeptid().equals(busLedgerDTO.getDeptid()) + ) { ledgerIds.add(busLedgerDTO.getId()); } }); @@ -417,23 +424,23 @@ public boolean syncDeviceStatus() { //1、查询所有离线设备 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("ONLINE_STATE",DictEnum.DEVICE_OFFLINE); - queryWrapper.gt("VALID","0"); + queryWrapper.eq("ONLINE_STATE", DictEnum.DEVICE_OFFLINE); + queryWrapper.gt("VALID", "0"); List busDeviceList = this.baseMapper.selectList(queryWrapper); - if(busDeviceList!=null&&busDeviceList.size()>0) { + if (busDeviceList != null && busDeviceList.size() > 0) { Map> listMap = busDeviceList.stream().collect(Collectors.groupingBy(BusDevice::getDeviceType)); for (Map.Entry> entry : listMap.entrySet()) { BaseDeviceType baseDeviceType = deviceTypeService.getById(entry.getKey()); List busDevices = entry.getValue(); List devcodes = busDevices.stream().map(BusDevice::getDevcode).collect(Collectors.toList()); - if(ObjectUtil.isNotEmpty(baseDeviceType)){ + if (ObjectUtil.isNotEmpty(baseDeviceType)) { switch (baseDeviceType.getTypeName()) { case "燃气智能监测终端": List commonDataDTOList = this.baseMapper.getMethaneData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); //toDo:批量保存优化 @@ -446,9 +453,9 @@ break; case "管网哨兵": List commonDataDTOList1 = this.baseMapper.getTubeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList1){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList1) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -458,9 +465,9 @@ break; case "智能警示桩": List commonDataDTOList2 = this.baseMapper.getMonitorPipeOtherData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList2){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList2) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -470,9 +477,9 @@ break; case "燃气智能监测终端(一体化)": List commonDataDTOList3 = this.baseMapper.getLGData(devcodes); - for(BusDevice busDevice:busDevices){ - for(CommonDataDTO commonDataDTO:commonDataDTOList3){ - if(busDevice.getDevcode().equals(commonDataDTO.getDevcode())){ + for (BusDevice busDevice : busDevices) { + for (CommonDataDTO commonDataDTO : commonDataDTOList3) { + if (busDevice.getDevcode().equals(commonDataDTO.getDevcode())) { busDevice.setOnlineState(DictEnum.DEVICE_ONLINE); busDevice.setLogtime(commonDataDTO.getLogTime()); this.baseMapper.updateById(busDevice); @@ -490,13 +497,21 @@ return true; } + @Override + public boolean updateBusDeviceStatus(List devcodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("DEVCODE", devcodes); + updateWrapper.set("ONLINE_STATE", "0"); + return this.update(updateWrapper); - @Cacheable(value = "alarmRuleCache", key = "#devcode") + } + +// @Cacheable(value = "alarmRuleCache", key = "#devcode") @Override public List getDeviceRule(String devcode) { List alarmRuleValueList = this.baseMapper.getSpecialDeviceRule(devcode); - if(alarmRuleValueList==null||alarmRuleValueList.size()<1){ - alarmRuleValueList=this.baseMapper.getDeviceTypeRule(devcode); + if (alarmRuleValueList == null || alarmRuleValueList.size() < 1) { + alarmRuleValueList = this.baseMapper.getDeviceTypeRule(devcode); } return alarmRuleValueList; } 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 28be73d..5073159 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 @@ -2,6 +2,7 @@ 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; @@ -47,7 +48,7 @@ private final CommonServer commonServer; @Lazy @Autowired - private IBusDeviceService iBusDeviceService; + private IBusDeviceService iBusDeviceService; @Override public Page listPage(Page page, BusLedgerPipeRequestDTO request) { @@ -65,7 +66,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid()) ? commonServer.getDeptNamesByDeptId(pipe.getDeptid()) : ""); }); return pipePage; } @@ -77,8 +78,8 @@ Page pageList = this.baseMapper.monitorPipePageList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { - busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 + busLedger.setOnState("1".equals(busLedger.getOnState()) ? "在用" : "备用"); // 在用状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +92,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()) : ""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 @@ -154,4 +155,12 @@ this.baseMapper.insert(busLedgerPipe); return busLedgerPipe; } + + @Override + public Boolean updateMonitorStatus(List tagNumbers) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("TAG_NUMBER", tagNumbers); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 597306c..8096a4c 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 @@ -3,6 +3,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.service.AbstractDeptService; @@ -15,12 +16,11 @@ import com.casic.missiles.modular.device.entity.BusGrid; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.entity.CtOrganization; -import com.casic.missiles.modular.device.service.IBusLedgerService; -import com.casic.missiles.modular.device.service.ICtOrganizationService; -import com.casic.missiles.modular.device.service.IEqEquipRqService; +import com.casic.missiles.modular.device.service.*; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +45,8 @@ private final CommonServer commonServer; private final ICtOrganizationService iCtOrganizationService; private final IEqEquipRqService iEqEquipRqService; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; public Page pageList(Page page, BusLedgerDTO request) { @@ -55,31 +57,32 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid()) ? commonServer.getDeptNamesByDeptId(busLedger.getDeptid()) : ""); }); return pageList; } //压力级制 0低压 1中压A 2中压B 3次高压A 4次高压B 5高压A 6高压B - public static String[] pressureLevelArr={"低压","中压A","中压B","次高压A","次高压B","高压A","高压B"}; + public static String[] pressureLevelArr = {"低压", "中压A", "中压B", "次高压A", "次高压B", "高压A", "高压B"}; + public Page pageGridList(Page page, BusLedgerDTO request) { Page pageGridList = this.baseMapper.pageGridList(page, request, commonServer.getDeptScopeIds(request.getDeptid())); List busGridList = pageGridList.getRecords(); busGridList.forEach(busGrid -> { busGrid.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busGrid.getLocationState())); - busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid())?commonServer.getDeptNamesByDeptId(busGrid.getDeptid()):""); + busGrid.setDeptName(ObjectUtil.isNotEmpty(busGrid.getDeptid()) ? commonServer.getDeptNamesByDeptId(busGrid.getDeptid()) : ""); String pressType = busGrid.getPressType(); - if(ObjectUtil.isNotEmpty(pressType)){ - String[] pressTypeArr= pressType.split(","); - String pressTypes=""; - for(String str:pressTypeArr){ - if(CommonUtil.isNumber(str)&&Integer.valueOf(str)<7){ - pressTypes+=pressureLevelArr[Integer.valueOf(str)]+","; - }else { - pressTypes+=str+","; + if (ObjectUtil.isNotEmpty(pressType)) { + String[] pressTypeArr = pressType.split(","); + String pressTypes = ""; + for (String str : pressTypeArr) { + if (CommonUtil.isNumber(str) && Integer.valueOf(str) < 7) { + pressTypes += pressureLevelArr[Integer.valueOf(str)] + ","; + } else { + pressTypes += str + ","; } } - busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes)?pressTypes.substring(0,pressTypes.length()-1):""); + busGrid.setPressType(ObjectUtil.isNotEmpty(pressTypes) ? pressTypes.substring(0, pressTypes.length() - 1) : ""); } }); return pageGridList; @@ -158,6 +161,9 @@ @Transactional @Override public boolean synAllDept() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; //获取同步表分公司及以下有效部门 List ctOrganizationList = iCtOrganizationService.getCtOrganizationList(); //获取闸井系统已存在的部门 @@ -188,10 +194,20 @@ && StrUtil.equals(deptOld.getSyncId(), dept1.getSyncId()) && StrUtil.equals(deptOld.getSyncPid(), dept1.getSyncPid()) && StrUtil.equals(deptOld.getPids(), dept1.getPids()) && StrUtil.equals(deptOld.getDeptType(), dept1.getDeptType())) continue; + if (deptOld == null) { + addCount++; + addContent += ctOrganization.getOrgName() + ","; + } else { + upDateCount++; + upDateContent += ctOrganization.getOrgName() + ","; + } abstractDeptService.saveOrUpdate(dept1); deptList.add(dept1); } - return true; + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } public String getPids(CtOrganization ctOrganization, List deptList) { @@ -249,6 +265,9 @@ @Transactional @Override public boolean synAllLedger() { + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("valid", "1"); List busLedgerList = this.baseMapper.selectList(queryWrapper); @@ -291,17 +310,35 @@ busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); busLedger.setValid("1"); - busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); + busLedger.setType("3".equals(syncTagDTO.getType()) ? "1" : "2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) && StrUtil.equals(busLedgerOld.getTargetId(), busLedger.getTargetId()) && StrUtil.equals(busLedgerOld.getTargetCode(), busLedger.getTargetCode())) continue; + if (busLedgerOld == null) { + addCount++; + addContent += busLedger.getLedgerCode() + ","; + } else { + upDateCount++; + upDateContent += busLedger.getLedgerCode() + ","; + } busLedgers.add(busLedger); } // } - return this.saveOrUpdateBatch(busLedgers); + this.saveOrUpdateBatch(busLedgers); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } + @Override + public boolean updateLedgerStatus(List ledgerCodes) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("LEDGER_CODE", ledgerCodes); + updateWrapper.set("MONITOR_STATE", "3"); + return this.update(updateWrapper); + } } 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 06470f7..2b4a2e0 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 @@ -66,17 +66,19 @@ @Override - public Map> latestValue(DeviceMonitorRequestDTO request) { - Map> resultMap = new HashMap<>(); + public List latestValue(DeviceMonitorRequestDTO request) { +// Map> resultMap = new HashMap<>(); List deviceMonitorDTOList = this.baseMapper.getDeviceList(request.getWellId()); - for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { - Map map = new HashMap<>(); - map.put("value",deviceMonitorDTO.getLatestValue()); - map.put("state",deviceMonitorDTO.getState()); - map.put("devcode",deviceMonitorDTO.getDevcode()); - resultMap.put(deviceMonitorDTO.getDevTypeName(), map); - } - return resultMap; +// for (DeviceMonitorDTO deviceMonitorDTO : deviceMonitorDTOList) { +// Map map = new HashMap<>(); +// map.put("value",deviceMonitorDTO.getLatestValue()); +// map.put("state",deviceMonitorDTO.getState()); +// map.put("devcode",deviceMonitorDTO.getDevcode()); +// map.put("offDays",deviceMonitorDTO.getOffDays()); +// map.put("alarmContent",deviceMonitorDTO.getAlarmContent()); +// resultMap.put(deviceMonitorDTO.getDevTypeName(), map); +// } + return deviceMonitorDTOList; } @Override diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java index b54e8dd..b14b4ba 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/CtUserServiceImpl.java @@ -10,6 +10,8 @@ import com.casic.missiles.modular.device.dao.CtUserMapper; import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.ICtUserService; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import com.casic.missiles.modular.device.service.ISyncLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Role; import com.casic.missiles.modular.system.model.User; @@ -17,6 +19,7 @@ import com.casic.missiles.modular.system.service.IUserService; import com.casic.missiles.server.CommonServer; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.SnowFlakeUtil; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,12 +49,16 @@ private final IRoleService iRoleService; private final IUserService userService; private final CommonServer commonServer; + private final ISyncLogService iSyncLogService; + private final ISyncLogDetailService iSyncLogDetailService; private static final Logger logger = LoggerFactory.getLogger(CtUserServiceImpl.class); @Transactional @Override public boolean synAllUsers() { - + Date startTime = new Date(); + int addCount = 0, upDateCount = 0; + String addContent = "", upDateContent = ""; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("STATE", 1); queryWrapper.eq("DEL_FLAG", 0); @@ -123,9 +130,20 @@ StrUtil.equals(userOld.getName(), user.getName()) && userOld.getAccount().equals(user.getAccount()) && StrUtil.equals(userOld.getSyncId(), user.getSyncId()) && StrUtil.equals(userOld.getSyncDeptid(), user.getSyncDeptid())) continue; + if (userOld == null) { + addCount++; + addContent += user.getAccount() + ","; + } else { + upDateCount++; + upDateContent += user.getAccount() + ","; + } userList.add(user); } - return userService.saveOrUpdateBatch(userList); + userService.saveOrUpdateBatch(userList); + Date endTime = new Date(); + Long syncId = SnowFlakeUtil.getId(); + iSyncLogService.saveSyncLogs(syncId, startTime, endTime, "1", upDateCount + "", "0", addCount + ""); + return iSyncLogDetailService.saveSyncLogs(syncId, upDateContent, "", addContent); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java new file mode 100644 index 0000000..d2242c6 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.SyncLogDetailMapper; +import com.casic.missiles.modular.device.entity.SyncLogDetail; +import com.casic.missiles.modular.device.service.ISyncLogDetailService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@Service +public class SyncLogDetailServiceImpl extends ServiceImpl implements ISyncLogDetailService { + + @Override + public boolean saveSyncLogs(Long syncId, String updateContent, String deleteContent, String addContent) { + + SyncLogDetail syncLogDetail = new SyncLogDetail(); + syncLogDetail.setSyncLogId(syncId); + syncLogDetail.setAddContent(addContent); + syncLogDetail.setUpdateContent(updateContent); + syncLogDetail.setDeleteContent(deleteContent); + return this.baseMapper.insert(syncLogDetail) > 0 ? true : false; + } + + @Override + public List getListBySyncId(Long syncId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("SYNC_LOG_ID", syncId); + return this.list(queryWrapper); + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java new file mode 100644 index 0000000..24afe4e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SyncLogServiceImpl.java @@ -0,0 +1,41 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.modular.device.dao.SyncLogMapper; +import com.casic.missiles.modular.device.entity.SyncLog; +import com.casic.missiles.modular.device.service.ISyncLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + *

+ * 提醒记录 服务实现类 + *

+ * + * @author zt + * @since 2024-12-27 + */ +@RequiredArgsConstructor +@Service +public class SyncLogServiceImpl extends ServiceImpl implements ISyncLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSyncLogs(Long id, Date startTime, Date endTime, String syncType, String updateCount, String deleteCount, String addCount) { + + SyncLog syncLog = new SyncLog(); + syncLog.setId(id); + syncLog.setStartTime(startTime); + syncLog.setEndTime(endTime); + syncLog.setSyncType(syncType); + syncLog.setUpdateCount(updateCount); + syncLog.setAddCount(addCount); + syncLog.setDeleteCount(deleteCount); + syncLog.setCreateUser(permissionContext.getAuthService().getLoginUser().getName()); + + return this.baseMapper.insert(syncLog) > 0 ? true : false; + } +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java index e26a6be..876ffc7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/SysOperationLogServiceImpl.java @@ -17,4 +17,6 @@ @Service public class SysOperationLogServiceImpl extends ServiceImpl implements ISysOperationLogService { + + } diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java new file mode 100644 index 0000000..f847fdf --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/CheckingJob.java @@ -0,0 +1,136 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.casic.missiles.modular.device.service.IBusGridService; +import com.casic.missiles.modular.device.service.IBusLedgerService; +import com.casic.missiles.modular.device.service.ICtUserService; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.DependsOn; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by admin on 2015/1/15. + */ +@DependsOn("taskScheduler") +@RequiredArgsConstructor +@Component +@Transactional +public class CheckingJob { + private static Logger logger = LoggerFactory.getLogger(CheckingJob.class); + + private final IAlarmRecordsService iAlarmRecordsService; + private final ISuspendLogService iSuspendLogService; + private final IApprovalLogService iApprovalLogService; + private final IBusLedgerService iBusLedgerService; + private final ICtUserService iCtUserService; + private final IBusGridService iBusGridService; + + @Value("${casic.enabled}") + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + private boolean enabled = true; + + //更新设备是否离线 + @Scheduled(cron = "0 0 1 * * ?") + public void execute() { + logger.info("开始执行离线告警任务"); + if (!enabled) { + return; + } + try { + iAlarmRecordsService.processOffline(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + //挂起时间到期处理 + @Scheduled(cron = "0 0/5 * * * ?") + public void executeSuspendExpire() { + if (!enabled) { + return; + } + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", new Date()); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + if (suspendLogList != null && suspendLogList.size() > 0) { + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + + + @Scheduled(cron = "0 0 23 * * ?") + public void executeSyncData() { + logger.info("开始执行全量同步数据任务"); + if (!enabled) { + return; + } + try { + //先同步部门 + iBusLedgerService.synAllDept(); + //同步台账 + iBusLedgerService.synAllLedger(); + //同步用户 + iCtUserService.synAllUsers(); + //同步网格 + iBusGridService.synAllGrids(); + } catch (Exception ex) { + logger.error(ex.getMessage(), ex); + } + } + +// TaskScheduler taskScheduler = SpringContextUtil.getApplicationContext().getBean(TaskScheduler.class); + + +// @PostConstruct +// public void scheduleRunnableWithCronTrigger() { +// +// taskScheduler.schedule(new RunnableTask1(), new CronTrigger("0 0/2 * * * *")); +// taskScheduler.schedule(new RunnableTask2(), new CronTrigger("0 0/1 * * * *")); +// } +// +// static class RunnableTask1 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask1现在时间:" + new Date()); +// } +// } +// +// static class RunnableTask2 implements Runnable { +// @Override +// public void run() { +// System.out.println("RunnableTask2现在时间:" + new Date()); +// } +// } + +} \ No newline at end of file diff --git a/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java new file mode 100644 index 0000000..8ad95dc --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/SnowFlakeUtil.java @@ -0,0 +1,51 @@ +package com.casic.missiles.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +import javax.annotation.Resource; + +@Resource +public class SnowFlakeUtil { + private long machineId ; + private long dataCenterId ; + + + public SnowFlakeUtil(long machineId, long dataCenterId) { + this.machineId = machineId; + this.dataCenterId = dataCenterId; + } + + /** + * 成员类,SnowFlakeUtil的实例对象的保存域 + */ + private static class IdGenHolder { + private static final SnowFlakeUtil instance = new SnowFlakeUtil(); + } + + /** + * 外部调用获取SnowFlakeUtil的实例对象,确保不可变 + */ + public static SnowFlakeUtil get() { + return IdGenHolder.instance; + } + + /** + * 初始化构造,无参构造有参函数,默认节点都是0 + */ + public SnowFlakeUtil() { + this(0L, 0L); + } + + private Snowflake snowflake = IdUtil.createSnowflake(machineId,dataCenterId); + + public synchronized long id(){ + return snowflake.nextId(); + } + + public static Long getId() { + return SnowFlakeUtil.get().id(); + } +} + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java index ce8992b..03cb6a3 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/CodeGenerator.java @@ -65,7 +65,7 @@ //策略配置 .strategyConfig(builder -> { - builder.addInclude("sys_role") // 设置需要生成的表名 + builder.addInclude("sync_log","sync_log_detail") // 设置需要生成的表名 .addTablePrefix() // 设置过滤表前缀 .entityBuilder() //实体类配置 .enableLombok() //使用lombok diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index 739eb99..02264b7 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -6,6 +6,7 @@ import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; /** @@ -18,6 +19,7 @@ @EnableCaching @EnableTransactionManagement(proxyTargetClass = true) @EnableAsync +@EnableScheduling @Slf4j public class CasicApplication { public static void main(String[] args) { diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 8e43996..5c71b48 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -22,7 +22,7 @@ redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/webjars/**,/device/receiveData,/alarmReturn,/getMap,/system/busGrid/synAllGrids,/system/busLedger/synAllLedger,/system/busLedger/synAllDept,/system/ctUser/synAllUsers + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/webjars/**,/device/receiveData,/alarmReturn,/getMap,/system/busGrid/synAllGrids,/system/busLedger/synAllLedger,/system/busLedger/synAllDept,/system/ctUser/synAllUsers,/sync/token #flowable数据源和多数据源配置 db: init: @@ -31,7 +31,7 @@ brPanGetDevcodeUrl: http://172.17.240.116:9092/ranshitong/device/getOneDevice brPanControlUrl: http://172.17.240.116:9092/HkController/controCearm brPanVideoUrl: http://172.17.240.116:9092/HkController/getPlayBackUrl - + enabled: true smartcity: config: #模板下载路径 diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 74799cd..cf7d8ea 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -37,6 +37,8 @@ invalid-time: 86400 host: localhost port: 6379 + rsa-private-key: MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAK7mTyBxMUnLlS0x+a0qJHd/8RxR73eTN+15GPr6wzl8dG86Jvzb66pAyOBpFmIxyvceIcgVjm8Dpz5F9vlHYI6K2g6HHID1TZ4teSfPEtRAgCpcC8pA7wqd6sDVCNx2zvGEkHZc+FYWVjhFW0xPbCvaUx3b1AMTgX+TPIOE0GnHAgMBAAECgYEAhJApfzRsIDu++L99N4POmgiOLmHn+CDMbiCwD2LLX6H1+mwAKv1hVOy/lF/ySEDnToA3KJk2GOyS8X9EH1K7WmxRcJ1am1JLwy+spHkExQzvAO9mrEhtavpwAZLiBoCUB4uQazETHncM0lNXtUYY8Ydd/zKodCMVPN4tql84f0kCQQDrPEgk6vdAc8vW1JL3ldhRkbl7DKuvDhhoixGEbXrsXXiKN6iB0A3lNTptMxcd1TjSJz8CF8piGRpVyLGoZOYLAkEAvlaXoVXndT+hbsStjORp2RGxZWMPyyyJ4Kw2TnMaUuODXA0PtnYcSA5lI6SpVAvTthSX7VDi5C9xLyc+QRvMtQJAVjzhTfd98XkCL536yx16El1UHFJG1oRaWmkxYNUqDWEvAazp770weukKpGHohZ1XmWOd68yA+3msd+p9hviGhQJAUIntgUwLM3aoRWmdkhd4nmw5JxCCt1LySIo2NH3J7rbsd3/jXS6fCvJkY2+iYrjabZpLKxTl3O4iM3SkiAJOXQJBAN++IAMMs7HVTQnsIN+L+tQwcWM5jn0sSRLGFvSkPjlT2W++qJNTW/oswmcQTPFn7Vf3GaE5JF6XAxrZMOZBG00= #用户加密登录私钥(不配置则每个用户动态生成) + rsa-public-key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB #用户密码加密登录公钥 xxl: job: admin: @@ -50,7 +52,7 @@ appname: casic-iot-job # 此执行器的ip、端口,每个节点对应自己的ip,端口用于任务执行的通信 ip: 10.30.7.26 - port: 20705 + port: 20706 # 此执行器的日志存放路径 logpath: logs/xxl-job/casic-iot # 此执行器的日志保存时间