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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} diff --git a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 60ea0cf..5cc9ede 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -29,6 +29,8 @@ MONITOR_VALID_FAILED(2099, "云台登录地址重复"), + LEDGER_CODE_NULL(2055, "位号不能为空"), + DEVICE_DUPLICATE(2011, "设备编号重复"); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} diff --git a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 60ea0cf..5cc9ede 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -29,6 +29,8 @@ MONITOR_VALID_FAILED(2099, "云台登录地址重复"), + LEDGER_CODE_NULL(2055, "位号不能为空"), + DEVICE_DUPLICATE(2011, "设备编号重复"); diff --git a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java index 0ff43b6..2bf57ab 100644 --- a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java +++ b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java @@ -2,15 +2,18 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; public class CommonUtil { // public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -112,6 +115,31 @@ return ""; } + + public static JSONArray getJsonArr(JSONArray jsonArray,String fileName){ + try { + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + list.add(jsonArray.getJSONObject(i)); + } + + Collections.sort(list, new Comparator() { + @Override + public int compare(JSONObject o1, JSONObject o2) { + // 根据时间字段排序 + return Long.valueOf(o1.getString(fileName)) - Long.valueOf(o2.getString(fileName))>=0? + 1:-1; + } + }); + return JSONArray.parseArray(JSON.toJSONString(list)); + + }catch (Exception e){ + e.printStackTrace(); + } + + return jsonArray; + } + public static void main(String[] args) { String ss = getAreaCode("东城"); System.out.println(ss); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} diff --git a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 60ea0cf..5cc9ede 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -29,6 +29,8 @@ MONITOR_VALID_FAILED(2099, "云台登录地址重复"), + LEDGER_CODE_NULL(2055, "位号不能为空"), + DEVICE_DUPLICATE(2011, "设备编号重复"); diff --git a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java index 0ff43b6..2bf57ab 100644 --- a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java +++ b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java @@ -2,15 +2,18 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; public class CommonUtil { // public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -112,6 +115,31 @@ return ""; } + + public static JSONArray getJsonArr(JSONArray jsonArray,String fileName){ + try { + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + list.add(jsonArray.getJSONObject(i)); + } + + Collections.sort(list, new Comparator() { + @Override + public int compare(JSONObject o1, JSONObject o2) { + // 根据时间字段排序 + return Long.valueOf(o1.getString(fileName)) - Long.valueOf(o2.getString(fileName))>=0? + 1:-1; + } + }); + return JSONArray.parseArray(JSON.toJSONString(list)); + + }catch (Exception e){ + e.printStackTrace(); + } + + return jsonArray; + } + public static void main(String[] args) { String ss = getAreaCode("东城"); System.out.println(ss); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index 5604d2e..fa308a1 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -66,7 +66,7 @@ * * 先去广播,再将自己加入到channelGroup中 */ -// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); +// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入 "); // channelGroup.add(channel); DeviceCommon.addChannel(channel.id().asLongText(), channel); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} diff --git a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 60ea0cf..5cc9ede 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -29,6 +29,8 @@ MONITOR_VALID_FAILED(2099, "云台登录地址重复"), + LEDGER_CODE_NULL(2055, "位号不能为空"), + DEVICE_DUPLICATE(2011, "设备编号重复"); diff --git a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java index 0ff43b6..2bf57ab 100644 --- a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java +++ b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java @@ -2,15 +2,18 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; public class CommonUtil { // public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -112,6 +115,31 @@ return ""; } + + public static JSONArray getJsonArr(JSONArray jsonArray,String fileName){ + try { + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + list.add(jsonArray.getJSONObject(i)); + } + + Collections.sort(list, new Comparator() { + @Override + public int compare(JSONObject o1, JSONObject o2) { + // 根据时间字段排序 + return Long.valueOf(o1.getString(fileName)) - Long.valueOf(o2.getString(fileName))>=0? + 1:-1; + } + }); + return JSONArray.parseArray(JSON.toJSONString(list)); + + }catch (Exception e){ + e.printStackTrace(); + } + + return jsonArray; + } + public static void main(String[] args) { String ss = getAreaCode("东城"); System.out.println(ss); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index 5604d2e..fa308a1 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -66,7 +66,7 @@ * * 先去广播,再将自己加入到channelGroup中 */ -// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); +// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入 "); // channelGroup.add(channel); DeviceCommon.addChannel(channel.id().asLongText(), channel); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java index 51b0dd0..30bd05c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java @@ -361,13 +361,13 @@ System.out.println("-----BEGIN PUBLIC KEY-----"); System.out.println(publicKey); System.out.println("-----END PUBLIC KEY-----"); - System.out.println("\n"); + System.out.println(" "); System.out.println("私钥:(填充方式:PKCS1_PADDING,输出类型:base64,字符集:utf8编码)"); System.out.println("-----BEGIN RSA PRIVATE KEY-----"); System.out.println(privateKey); System.out.println("-----END RSA PRIVATE KEY-----"); - System.out.println("\n"); + System.out.println(" "); // 待加密内容,例:123 String s = "01030400000014FA3C000159543230323430393133"; @@ -376,7 +376,7 @@ // 打印加密后内容 System.out.println("密文:(填充方式:PKCS1_PADDING,输出类型:hex,字符集:utf8编码)"); System.out.println(encrypt); - System.out.println("\n"); + System.out.println(" "); // 进行RSA解密 String decrypt = decrypt(encrypt, BR_PRIVATE_KEY); 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} diff --git a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 60ea0cf..5cc9ede 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -29,6 +29,8 @@ MONITOR_VALID_FAILED(2099, "云台登录地址重复"), + LEDGER_CODE_NULL(2055, "位号不能为空"), + DEVICE_DUPLICATE(2011, "设备编号重复"); diff --git a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java index 0ff43b6..2bf57ab 100644 --- a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java +++ b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java @@ -2,15 +2,18 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; public class CommonUtil { // public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -112,6 +115,31 @@ return ""; } + + public static JSONArray getJsonArr(JSONArray jsonArray,String fileName){ + try { + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + list.add(jsonArray.getJSONObject(i)); + } + + Collections.sort(list, new Comparator() { + @Override + public int compare(JSONObject o1, JSONObject o2) { + // 根据时间字段排序 + return Long.valueOf(o1.getString(fileName)) - Long.valueOf(o2.getString(fileName))>=0? + 1:-1; + } + }); + return JSONArray.parseArray(JSON.toJSONString(list)); + + }catch (Exception e){ + e.printStackTrace(); + } + + return jsonArray; + } + public static void main(String[] args) { String ss = getAreaCode("东城"); System.out.println(ss); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index 5604d2e..fa308a1 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -66,7 +66,7 @@ * * 先去广播,再将自己加入到channelGroup中 */ -// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); +// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入 "); // channelGroup.add(channel); DeviceCommon.addChannel(channel.id().asLongText(), channel); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java index 51b0dd0..30bd05c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java @@ -361,13 +361,13 @@ System.out.println("-----BEGIN PUBLIC KEY-----"); System.out.println(publicKey); System.out.println("-----END PUBLIC KEY-----"); - System.out.println("\n"); + System.out.println(" "); System.out.println("私钥:(填充方式:PKCS1_PADDING,输出类型:base64,字符集:utf8编码)"); System.out.println("-----BEGIN RSA PRIVATE KEY-----"); System.out.println(privateKey); System.out.println("-----END RSA PRIVATE KEY-----"); - System.out.println("\n"); + System.out.println(" "); // 待加密内容,例:123 String s = "01030400000014FA3C000159543230323430393133"; @@ -376,7 +376,7 @@ // 打印加密后内容 System.out.println("密文:(填充方式:PKCS1_PADDING,输出类型:hex,字符集:utf8编码)"); System.out.println(encrypt); - System.out.println("\n"); + System.out.println(" "); // 进行RSA解密 String decrypt = decrypt(encrypt, BR_PRIVATE_KEY); 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 1eb5c78..670d6ac 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 @@ -33,7 +33,7 @@ FastAutoGenerator.create( //数据源配置,url需要修改 - new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") + new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") .dbQuery(new MySqlQuery()) .schema("schema") .typeConvert(new MySqlTypeConvert()) @@ -65,7 +65,7 @@ //策略配置 .strategyConfig(builder -> { - builder.addInclude("data_gasliquid_liquid") // 设置需要生成的表名 + builder.addInclude("ncx_postion") // 设置需要生成的表名 .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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} diff --git a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 60ea0cf..5cc9ede 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -29,6 +29,8 @@ MONITOR_VALID_FAILED(2099, "云台登录地址重复"), + LEDGER_CODE_NULL(2055, "位号不能为空"), + DEVICE_DUPLICATE(2011, "设备编号重复"); diff --git a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java index 0ff43b6..2bf57ab 100644 --- a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java +++ b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java @@ -2,15 +2,18 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; public class CommonUtil { // public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -112,6 +115,31 @@ return ""; } + + public static JSONArray getJsonArr(JSONArray jsonArray,String fileName){ + try { + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + list.add(jsonArray.getJSONObject(i)); + } + + Collections.sort(list, new Comparator() { + @Override + public int compare(JSONObject o1, JSONObject o2) { + // 根据时间字段排序 + return Long.valueOf(o1.getString(fileName)) - Long.valueOf(o2.getString(fileName))>=0? + 1:-1; + } + }); + return JSONArray.parseArray(JSON.toJSONString(list)); + + }catch (Exception e){ + e.printStackTrace(); + } + + return jsonArray; + } + public static void main(String[] args) { String ss = getAreaCode("东城"); System.out.println(ss); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index 5604d2e..fa308a1 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -66,7 +66,7 @@ * * 先去广播,再将自己加入到channelGroup中 */ -// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); +// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入 "); // channelGroup.add(channel); DeviceCommon.addChannel(channel.id().asLongText(), channel); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java index 51b0dd0..30bd05c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java @@ -361,13 +361,13 @@ System.out.println("-----BEGIN PUBLIC KEY-----"); System.out.println(publicKey); System.out.println("-----END PUBLIC KEY-----"); - System.out.println("\n"); + System.out.println(" "); System.out.println("私钥:(填充方式:PKCS1_PADDING,输出类型:base64,字符集:utf8编码)"); System.out.println("-----BEGIN RSA PRIVATE KEY-----"); System.out.println(privateKey); System.out.println("-----END RSA PRIVATE KEY-----"); - System.out.println("\n"); + System.out.println(" "); // 待加密内容,例:123 String s = "01030400000014FA3C000159543230323430393133"; @@ -376,7 +376,7 @@ // 打印加密后内容 System.out.println("密文:(填充方式:PKCS1_PADDING,输出类型:hex,字符集:utf8编码)"); System.out.println(encrypt); - System.out.println("\n"); + System.out.println(" "); // 进行RSA解密 String decrypt = decrypt(encrypt, BR_PRIVATE_KEY); 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 1eb5c78..670d6ac 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 @@ -33,7 +33,7 @@ FastAutoGenerator.create( //数据源配置,url需要修改 - new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") + new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") .dbQuery(new MySqlQuery()) .schema("schema") .typeConvert(new MySqlTypeConvert()) @@ -65,7 +65,7 @@ //策略配置 .strategyConfig(builder -> { - builder.addInclude("data_gasliquid_liquid") // 设置需要生成的表名 + builder.addInclude("ncx_postion") // 设置需要生成的表名 .addTablePrefix() // 设置过滤表前缀 .entityBuilder() //实体类配置 .enableLombok() //使用lombok diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 425ab6d..02db5ea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,12 +4,12 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true -# username: root -# password: Casic203 - url: jdbc:mysql://172.27.34.168:3316/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true - username: bjwxduser - password: hpQEn5my9md#U + url: jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true + username: root + password: Casic203 +# url: jdbc:mysql://172.27.34.168:3316/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true +# username: bjwxduser +# password: hpQEn5my9md#U jms: pub-sub-domain: true # session:b 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} diff --git a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 60ea0cf..5cc9ede 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -29,6 +29,8 @@ MONITOR_VALID_FAILED(2099, "云台登录地址重复"), + LEDGER_CODE_NULL(2055, "位号不能为空"), + DEVICE_DUPLICATE(2011, "设备编号重复"); diff --git a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java index 0ff43b6..2bf57ab 100644 --- a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java +++ b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java @@ -2,15 +2,18 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; public class CommonUtil { // public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -112,6 +115,31 @@ return ""; } + + public static JSONArray getJsonArr(JSONArray jsonArray,String fileName){ + try { + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + list.add(jsonArray.getJSONObject(i)); + } + + Collections.sort(list, new Comparator() { + @Override + public int compare(JSONObject o1, JSONObject o2) { + // 根据时间字段排序 + return Long.valueOf(o1.getString(fileName)) - Long.valueOf(o2.getString(fileName))>=0? + 1:-1; + } + }); + return JSONArray.parseArray(JSON.toJSONString(list)); + + }catch (Exception e){ + e.printStackTrace(); + } + + return jsonArray; + } + public static void main(String[] args) { String ss = getAreaCode("东城"); System.out.println(ss); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index 5604d2e..fa308a1 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -66,7 +66,7 @@ * * 先去广播,再将自己加入到channelGroup中 */ -// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); +// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入 "); // channelGroup.add(channel); DeviceCommon.addChannel(channel.id().asLongText(), channel); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java index 51b0dd0..30bd05c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java @@ -361,13 +361,13 @@ System.out.println("-----BEGIN PUBLIC KEY-----"); System.out.println(publicKey); System.out.println("-----END PUBLIC KEY-----"); - System.out.println("\n"); + System.out.println(" "); System.out.println("私钥:(填充方式:PKCS1_PADDING,输出类型:base64,字符集:utf8编码)"); System.out.println("-----BEGIN RSA PRIVATE KEY-----"); System.out.println(privateKey); System.out.println("-----END RSA PRIVATE KEY-----"); - System.out.println("\n"); + System.out.println(" "); // 待加密内容,例:123 String s = "01030400000014FA3C000159543230323430393133"; @@ -376,7 +376,7 @@ // 打印加密后内容 System.out.println("密文:(填充方式:PKCS1_PADDING,输出类型:hex,字符集:utf8编码)"); System.out.println(encrypt); - System.out.println("\n"); + System.out.println(" "); // 进行RSA解密 String decrypt = decrypt(encrypt, BR_PRIVATE_KEY); 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 1eb5c78..670d6ac 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 @@ -33,7 +33,7 @@ FastAutoGenerator.create( //数据源配置,url需要修改 - new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") + new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") .dbQuery(new MySqlQuery()) .schema("schema") .typeConvert(new MySqlTypeConvert()) @@ -65,7 +65,7 @@ //策略配置 .strategyConfig(builder -> { - builder.addInclude("data_gasliquid_liquid") // 设置需要生成的表名 + builder.addInclude("ncx_postion") // 设置需要生成的表名 .addTablePrefix() // 设置过滤表前缀 .entityBuilder() //实体类配置 .enableLombok() //使用lombok diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 425ab6d..02db5ea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,12 +4,12 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true -# username: root -# password: Casic203 - url: jdbc:mysql://172.27.34.168:3316/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true - username: bjwxduser - password: hpQEn5my9md#U + url: jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true + username: root + password: Casic203 +# url: jdbc:mysql://172.27.34.168:3316/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true +# username: bjwxduser +# password: hpQEn5my9md#U jms: pub-sub-domain: true # session:b diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx index 06e46e4..0f1fc22 100644 --- a/casic-web/src/main/resources/config/temp/device_template.xlsx +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} diff --git a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 60ea0cf..5cc9ede 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -29,6 +29,8 @@ MONITOR_VALID_FAILED(2099, "云台登录地址重复"), + LEDGER_CODE_NULL(2055, "位号不能为空"), + DEVICE_DUPLICATE(2011, "设备编号重复"); diff --git a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java index 0ff43b6..2bf57ab 100644 --- a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java +++ b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java @@ -2,15 +2,18 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; public class CommonUtil { // public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -112,6 +115,31 @@ return ""; } + + public static JSONArray getJsonArr(JSONArray jsonArray,String fileName){ + try { + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + list.add(jsonArray.getJSONObject(i)); + } + + Collections.sort(list, new Comparator() { + @Override + public int compare(JSONObject o1, JSONObject o2) { + // 根据时间字段排序 + return Long.valueOf(o1.getString(fileName)) - Long.valueOf(o2.getString(fileName))>=0? + 1:-1; + } + }); + return JSONArray.parseArray(JSON.toJSONString(list)); + + }catch (Exception e){ + e.printStackTrace(); + } + + return jsonArray; + } + public static void main(String[] args) { String ss = getAreaCode("东城"); System.out.println(ss); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index 5604d2e..fa308a1 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -66,7 +66,7 @@ * * 先去广播,再将自己加入到channelGroup中 */ -// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); +// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入 "); // channelGroup.add(channel); DeviceCommon.addChannel(channel.id().asLongText(), channel); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java index 51b0dd0..30bd05c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java @@ -361,13 +361,13 @@ System.out.println("-----BEGIN PUBLIC KEY-----"); System.out.println(publicKey); System.out.println("-----END PUBLIC KEY-----"); - System.out.println("\n"); + System.out.println(" "); System.out.println("私钥:(填充方式:PKCS1_PADDING,输出类型:base64,字符集:utf8编码)"); System.out.println("-----BEGIN RSA PRIVATE KEY-----"); System.out.println(privateKey); System.out.println("-----END RSA PRIVATE KEY-----"); - System.out.println("\n"); + System.out.println(" "); // 待加密内容,例:123 String s = "01030400000014FA3C000159543230323430393133"; @@ -376,7 +376,7 @@ // 打印加密后内容 System.out.println("密文:(填充方式:PKCS1_PADDING,输出类型:hex,字符集:utf8编码)"); System.out.println(encrypt); - System.out.println("\n"); + System.out.println(" "); // 进行RSA解密 String decrypt = decrypt(encrypt, BR_PRIVATE_KEY); 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 1eb5c78..670d6ac 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 @@ -33,7 +33,7 @@ FastAutoGenerator.create( //数据源配置,url需要修改 - new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") + new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") .dbQuery(new MySqlQuery()) .schema("schema") .typeConvert(new MySqlTypeConvert()) @@ -65,7 +65,7 @@ //策略配置 .strategyConfig(builder -> { - builder.addInclude("data_gasliquid_liquid") // 设置需要生成的表名 + builder.addInclude("ncx_postion") // 设置需要生成的表名 .addTablePrefix() // 设置过滤表前缀 .entityBuilder() //实体类配置 .enableLombok() //使用lombok diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 425ab6d..02db5ea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,12 +4,12 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true -# username: root -# password: Casic203 - url: jdbc:mysql://172.27.34.168:3316/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true - username: bjwxduser - password: hpQEn5my9md#U + url: jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true + username: root + password: Casic203 +# url: jdbc:mysql://172.27.34.168:3316/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true +# username: bjwxduser +# password: hpQEn5my9md#U jms: pub-sub-domain: true # session:b diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx index 06e46e4..0f1fc22 100644 --- a/casic-web/src/main/resources/config/temp/device_template.xlsx +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipe_info_template.xlsx b/casic-web/src/main/resources/config/temp/pipe_info_template.xlsx index 1e30279..09c960f 100644 --- a/casic-web/src/main/resources/config/temp/pipe_info_template.xlsx +++ b/casic-web/src/main/resources/config/temp/pipe_info_template.xlsx Binary files differ 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 0111eb5..d7a3e2e 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 @@ -2,10 +2,12 @@ import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.CodesDTO; import com.casic.missiles.dto.IdDTO; import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; @@ -200,12 +202,23 @@ @PostMapping("/getDeviceCodeByTagNumber") @ResponseBody public ReturnDTO getDeviceCodeByTagNumber(@RequestBody AlarmRecordDTO request) { - return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber( request)); + return ReturnUtil.success(iAlarmRecordsService.getDeviceCodeByTagNumber(request)); + } + + + @ApiOperation("手动消警,保留原始记录,传点位位号即可") + @PostMapping("/cancelAlarmByLedgerNumber") + @ResponseBody + public ReturnDTO cancelAlarm(@RequestBody CodesDTO codesDTO) { + Assert.isFalse(ObjectUtil.isEmpty(codesDTO.getCodes()), () -> { + throw new BusinessException(BusinessExceptionEnum.LEDGER_CODE_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.cancelAlarmByLedgerNumber(codesDTO.getCodes())); } @PostMapping("/test") @ResponseBody - public void test( ) { + public void test() { iAlarmRecordsService.processOffline(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index 5a93a19..e85aa7b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -12,12 +12,16 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; 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.List; +import java.util.Map; + /** *

* 首页展示 前端控制器 @@ -119,9 +123,16 @@ @ApiOperation("站箱数据") @PostMapping("/dataStation") @ResponseBody - public ReturnDTO dataStation() { + public ReturnDTO>> dataStation() { return ReturnUtil.success(iOverViewService.dataStation()); } + @ApiOperation("获取站箱点位详细信息") + @PostMapping("/stationDetail") + @ResponseBody + public ReturnDTO stationDetail(String tagNumber) { + return ReturnUtil.success(iOverViewService.stationDetail(tagNumber)); + } + } 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 5f42b25..e56ca7c 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,11 +21,11 @@ @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,su.NAME " + + @Select("SELECT al.ID,al.ALARM_ID,al.APPROVAL_PERSON,al.APPROVAL_TIME,al.APPROVAL_STATUS,al.DESCN,al.FLOW_STATUS,al.CONFIRM_VALUE,su.DEPT_ID,su.NAME " + "FROM " + " `approval_log` al " + " LEFT JOIN sys_user su ON al.APPROVAL_PERSON_ID = su.ID " + - "WHERE al.ALARM_ID = #{alarmId}") + "WHERE al.ALARM_ID = #{alarmId} order by al.APPROVAL_TIME ") List> getListByAlarmId(@Param("alarmId") Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java index 74f9317..33660c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/OverViewMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -53,39 +54,65 @@ Page deviceMonitorList(Page page, @Param("request") DeviceMonitorRequestDTO request, @Param("deptIdStr") String deptIdStr); - - @Select("WITH station_temp AS ( " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'in' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + - " SELECT " + - " bs.TAG_NUMBER, " + - " bs.TYPE, " + - " bs.press_type, " + - " sv.value, " + - " 'out' AS 'flag' " + - " FROM " + - " `bus_station` bs " + - " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + - " ) SELECT " + - " bl.LEDGER_NAME AS tagName, " + - " st.TAG_NUMBER, " + - " st.TYPE, " + - " st.press_type, " + - " st.value, " + - " st.flag, " + - " bl.LNG_GAODE, " + - " bl.LAT_GAODE " + - "FROM " + - " station_temp st " + - " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + - " where bl.valid = '1' " + - " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") + +// @Select("WITH station_temp AS ( " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'in' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_IN_CODE = sv.point UNION ALL " + +// " SELECT " + +// " bs.TAG_NUMBER, " + +// " bs.TYPE, " + +// " bs.press_type, " + +// " sv.value, " + +// " 'out' AS 'flag' " + +// " FROM " + +// " `bus_station` bs " + +// " LEFT JOIN scada_view sv ON bs.PRESS_OUT_CODE = sv.point " + +// " ) SELECT " + +// " bl.LEDGER_NAME AS tagName, " + +// " st.TAG_NUMBER, " + +// " st.TYPE, " + +// " st.press_type, " + +// " st.value, " + +// " st.flag, " + +// " bl.LNG_GAODE, " + +// " bl.LAT_GAODE " + +// "FROM " + +// " station_temp st " + +// " JOIN bus_ledger bl ON st.TAG_NUMBER = bl.TAG_NUMBER " + +// " where bl.valid = '1' " + +// " AND bl.type = '2' and bl.LNG_GAODE is not null and st.value is not null") +// List dataStation(); + + @Select("WITH station_temp AS ( " + + " WITH scada_temp AS ( SELECT point FROM ods_scada_data_temp ) SELECT DISTINCT " + + " TAG_NUMBER, " + + " type " + + " FROM " + + " bus_station bs " + + " WHERE " + + " bs.PRESS_IN_CODE IN ( SELECT point FROM scada_temp ) " + + " OR bs.PRESS_OUT_CODE IN ( SELECT point FROM scada_temp )) SELECT " + + " bl.TAG_NUMBER, " + + " st.type, " + + " bl.LNG_GAODE, " + + " bl.LAT_GAODE " + + "FROM " + + " bus_ledger bl " + + " JOIN station_temp st ON st.TAG_NUMBER = bl.TAG_NUMBER " + + "WHERE " + + " bl.valid = '1' " + + " AND bl.type = '2' " + + " AND bl.LNG_GAODE IS NOT NULL") List dataStation(); + + + @Select("WITH station_tmp AS ( SELECT bs.PRESS_IN_CODE, bs.PRESS_OUT_CODE, bl.LEDGER_NAME AS tagName FROM bus_station bs JOIN bus_ledger bl ON bs.TAG_NUMBER = bl.TAG_NUMBER WHERE bl.TAG_NUMBER = #{tagNumber} ) SELECT tagName,sv.`value`, 'in' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_IN_CODE = sv.point WHERE PRESS_IN_CODE != '' UNION ALL SELECT tagName,sv.`value`, 'out' AS 'flag' FROM `station_tmp` bs JOIN ods_scada_data_temp sv ON bs.PRESS_OUT_CODE = sv.point WHERE PRESS_OUT_CODE != ''") + List stationDetail(@Param("tagNumber") String tagNumber); } 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 772a560..3623dd2 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 @@ -75,7 +75,11 @@ boolean isMethaneError(String devCode); - void cancelDataAlarm(String devCode); +// void cancelDataAlarm(String devCode); + + void cancelDataAlarmByLedgerNumber(String ledgerNumber); + + boolean cancelAlarmByLedgerNumber(List codes); void processOffline(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index 49dc254..bd17067 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -4,6 +4,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import java.util.List; @@ -19,5 +20,7 @@ boolean saveSuspendLogs(List alarmRecordsList); + boolean updateSuspendLogs(List suspendLogList); + List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java index b510330..acab4a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IOverViewService.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import java.util.List; import java.util.Map; @@ -30,7 +31,9 @@ List pointStatistics(); - List dataStation(); + List> dataStation(); + + List stationDetail(String tagNumber); Page deviceMonitorList(Page page,DeviceMonitorRequestDTO requestDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java index b95eeae..9be8b8e 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ISuspendLogService.java @@ -13,4 +13,6 @@ */ public interface ISuspendLogService extends IService { + void cancelSuspend(Long alarmId); + } 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 586d046..cec2722 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; @@ -22,10 +23,7 @@ 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.alarm.service.*; import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusLedgerPipeService; import com.casic.missiles.modular.device.service.IBusLedgerService; @@ -74,6 +72,7 @@ private final IBusLedgerPipeService iBusLedgerPipeService; private final IAlarmEventProductService iAlarmEventProductService; private final IMonitorLogService iMonitorLogService; + private final ISuspendLogService iSuspendLogService; @Value("${casic.brAppUrl}") private String brAppUrl; @@ -329,9 +328,9 @@ //消除流程信息 approvalLogMapper.deleteByAlarmIds(alarmIdsStr); //消除提醒信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + remindLogMapper.deleteByAlarmIds(alarmIdsStr); //消除挂起信息 - approvalLogMapper.deleteByAlarmIds(alarmIdsStr); + suspendLogMapper.deleteByAlarmIds(alarmIdsStr); //删除报警记录 return this.removeByIds(alarmIds); } @@ -831,18 +830,17 @@ return true; } + /** - * 消除数据异常记录 - * - * @param devCode + * 根据位号自动取消数据报警 + * @param ledgerNumber */ @Override - public void cancelDataAlarm(String devCode) { - //更新报警信息 + public void cancelDataAlarmByLedgerNumber(String ledgerNumber) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("LEDGER_NUMBER", ledgerNumber); queryWrapper.eq("EXCEPTION_TYPE", "0"); - //只有未读、已读、已确认、已处置、挂起的才消 + //只有未读、已读、已确认、处置中、挂起的才消 queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); queryWrapper.eq("STATUS", "1"); queryWrapper.gt("ALARM_VALUE", 0); @@ -867,6 +865,73 @@ } } +// /** +// * 消除数据异常记录 +// * +// * @param devCode +// */ +// @Override +// public void cancelDataAlarm(String devCode) { +// //更新报警信息 +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("DEVCODE", devCode); +// queryWrapper.eq("EXCEPTION_TYPE", "0"); +// //只有未读、已读、已确认、处置中、挂起的才消 +// queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7", "10")); +// queryWrapper.eq("STATUS", "1"); +// queryWrapper.gt("ALARM_VALUE", 0); +// List alarmRecordsList = this.list(queryWrapper); +// if (alarmRecordsList != null && alarmRecordsList.size() > 0) { +// alarmRecordsList.forEach(alarmRecords -> { +// alarmRecords.setStatus("0"); +// alarmRecords.setCancelTime(new Date()); +// alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); +// alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); +// this.updateById(alarmRecords); +// //添加流程日志 +// approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", +// "", "8", +// null)); +// //添加消息通知 +// iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", +// alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). +// concat("报警解除"), alarmRecords.getLedgerNumber())); +// }); +// +// } +// } + + + @Override + public boolean cancelAlarmByLedgerNumber(List codes) { + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("LEDGER_NUMBER", codes); + queryWrapper.eq("EXCEPTION_TYPE", "0"); + queryWrapper.eq("STATUS", "1"); + queryWrapper.gt("ALARM_VALUE", 0); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecords.getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(alarmRecords.getId(), DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecords.getPosition().concat(alarmRecords.getAlarmMsg()). + concat("报警解除"), alarmRecords.getLedgerNumber())); + }); + + } + return true; + } + /** * 更新电量、最新状态时间、设备状态、报警内容 * @@ -1004,6 +1069,10 @@ //特殊处理位移报警 if ("DisplacementAlarm".equals(alarmRecords.getAlarmMsg()) && DictEnum.DEVICE_EXCEPTION.equals(alarmRecords.getExceptionType())) cancelDeviceAlarm(alarmRecords.getDevcode(), "DisplacementAlarm"); + //若是提前结束挂起状态,则需要取消挂起状态数据 + if(ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getPreProcessStatus())){ + iSuspendLogService.cancelSuspend(alarmRecords.getId()); + } } } return true; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index b8b5a87..0b28917 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.model.auth.AuthUser; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; import com.casic.missiles.modular.alarm.dto.ApprovalRequestDTO; @@ -11,7 +12,6 @@ import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -30,17 +30,22 @@ @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { - private final AbstractPermissionContext permissionContext; @Override public boolean saveSuspendLogs(List alarmRecordsList) { - AuthUser user = permissionContext.getAuthService().getLoginUser(); List approvalLogList = new ArrayList<>(); alarmRecordsList.forEach(alarmRecords -> { - approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", - user != null ? user.getName() : "", alarmRecords.getPreProcessStatus(), - user != null ? user.getId() : null)); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getId()), "ALARM_ID", alarmRecords.getId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(alarmRecords.getProcessStatus()), "FLOW_STATUS", alarmRecords.getProcessStatus()); + queryWrapper.orderByDesc("APPROVAL_TIME"); + List approvalLog1List = this.list(queryWrapper); + //toDo:暂不按这种逻辑写 +// if (CollectionUtil.isNotEmpty(approvalLog1List)) { +// approvalLogList.add(approvalLog1List.get(0)); +// } }); return this.saveBatch(approvalLogList); } @@ -48,9 +53,25 @@ @Override public List getApprovalLogs(ApprovalRequestDTO approvalRequestDTO) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()),"ALARM_ID",approvalRequestDTO.getAlarmId()); - queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()),"FLOW_STATUS",approvalRequestDTO.getFlowStatus()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getAlarmId()), "ALARM_ID", approvalRequestDTO.getAlarmId()); + queryWrapper.eq(ObjectUtil.isNotEmpty(approvalRequestDTO.getFlowStatus()), "FLOW_STATUS", approvalRequestDTO.getFlowStatus()); queryWrapper.orderByDesc("APPROVAL_TIME"); return this.list(queryWrapper); } + + @Override + public boolean updateSuspendLogs(List suspendLogList) { + suspendLogList.forEach(suspendLog -> { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq(ObjectUtil.isNotEmpty(suspendLog.getAlarmId()), "ALARM_ID", suspendLog.getAlarmId()); + updateWrapper.eq("FLOW_STATUS", ApprovalStatusEnum.SUSPEND.getCode()); + updateWrapper.eq("DESCN", suspendLog.getSuspendTime().concat("|").concat(suspendLog.getSuspendReason())); + updateWrapper.isNull("CONFIRM_VALUE"); + updateWrapper.set(ObjectUtil.isNotEmpty(suspendLog.getExpireTime()), "CONFIRM_VALUE", DateUtil.formatDateTime(suspendLog.getExpireTime())); + this.update(updateWrapper); + }); + + + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index c8d66e4..425c5d4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -10,11 +10,12 @@ import com.casic.missiles.modular.alarm.service.IOverViewService; import com.casic.missiles.modular.device.dto.PointMonitorDTO; import com.casic.missiles.modular.device.dto.StationDTO; +import com.casic.missiles.modular.device.dto.StationDataDTO; import com.casic.missiles.server.CommonServer; -import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -76,7 +77,7 @@ //泄漏 if (ObjectUtil.isNotEmpty(deviceTypeDTO.getWatchType()) && deviceTypeDTO.getWatchType().contains(DictEnum.WATCH_TYPE_1)) { leakTotalCount++; - if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState())&&monitorDTO.getDevcode().indexOf("24")!=0) { + if (DictEnum.DEVICE_OFFLINE.equals(monitorDTO.getOnlineState()) && monitorDTO.getDevcode().indexOf("24") != 0) { leakOffCount++; } else if (DictEnum.DEVICE_ALARM.equals(monitorDTO.getOnlineState())) { leakAlarmCount++; @@ -231,8 +232,23 @@ @Override - public List dataStation() { - return baseMapper.dataStation(); + public List> dataStation() { + List> mapList = new ArrayList<>(); + List resultDTOList = baseMapper.dataStation(); + resultDTOList.forEach(resultDTO -> { + Map map = new HashMap<>(); + if (ObjectUtil.isAllNotEmpty(resultDTO.getTagNumber(), resultDTO.getType(), resultDTO.getLngGaode(), resultDTO.getLatGaode())) { + map.put("data", resultDTO.getTagNumber().concat(",").concat(resultDTO.getType()).concat(",").concat(resultDTO.getLngGaode().concat(",").concat(resultDTO.getLatGaode()))); + mapList.add(map); + } + }); + return mapList; + } + + @Override + public List stationDetail(String tagNumber) { + return baseMapper.stationDetail(tagNumber); + } @Override diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java index 7225cff..9c603c5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/SuspendLogServiceImpl.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.alarm.dao.SuspendLogMapper; import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.ISuspendLogService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** @@ -17,4 +18,12 @@ @Service public class SuspendLogServiceImpl extends ServiceImpl implements ISuspendLogService { + @Override + public void cancelSuspend(Long alarmId) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("ALARM_ID", alarmId); + updateWrapper.eq("VALID", "1"); + updateWrapper.set("VALID", "0"); + this.update(updateWrapper); + } } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java new file mode 100644 index 0000000..412b820 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/controller/DataCockpitController.java @@ -0,0 +1,82 @@ +package com.casic.missiles.modular.data.controller; + + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +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 2025-07-03 + */ +@Api(tags = "驾驶舱数据录入模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dataCockpit") +public class DataCockpitController { + + private final IDataCockpitService iDataCockpitService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody DataCockpit dataCockpit) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(dataCockpit.getType()), "TYPE", dataCockpit.getType()); + queryWrapper.like(ObjectUtil.isNotEmpty(dataCockpit.getContent()), "CONTENT", dataCockpit.getContent()); + return ReturnUtil.success(iDataCockpitService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody DataCockpit dataCockpit) { + //先删除原来的记录 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("TYPE", dataCockpit.getType()); + iDataCockpitService.remove(queryWrapper); + return ReturnUtil.success(iDataCockpitService.save(dataCockpit)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody DataCockpit dataCockpit) { + Assert.isFalse(Objects.isNull(dataCockpit.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.updateById(dataCockpit)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iDataCockpitService.removeByIds(idsDTO.getIds())); + } + + +} + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java new file mode 100644 index 0000000..1726be4 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataCockpitMapper.java @@ -0,0 +1,18 @@ +package com.casic.missiles.modular.data.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 通知表 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Mapper +public interface DataCockpitMapper extends BaseMapper { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml new file mode 100644 index 0000000..8c2768e --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/mapping/DataCockpitMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + ID, CONTENT, `TYPE` + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java new file mode 100644 index 0000000..efa47a7 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataCockpit.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.data.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * 通知表 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Getter +@Setter +@TableName("data_cockpit") +@ApiModel(value = "DataCockpit对象", description = "通知表") +public class DataCockpit implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("填充数据") + @TableField("CONTENT") + private String content; + + @ApiModelProperty("1,2代表....") + @TableField("`TYPE`") + private String type; + + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java new file mode 100644 index 0000000..e64988b --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataCockpitService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.data.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.data.entity.DataCockpit; + +/** + *

+ * 通知表 服务类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +public interface IDataCockpitService extends IService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java new file mode 100644 index 0000000..d4828e5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataCockpitServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.data.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.data.dao.DataCockpitMapper; +import com.casic.missiles.modular.data.entity.DataCockpit; +import com.casic.missiles.modular.data.service.IDataCockpitService; +import org.springframework.stereotype.Service; + +/** + *

+ * 通知表 服务实现类 + *

+ * + * @author zt + * @since 2025-07-03 + */ +@Service +public class DataCockpitServiceImpl extends ServiceImpl implements IDataCockpitService { + +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java index ca1170b..437bae5 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasOtherServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -73,7 +74,7 @@ } } } catch (Exception e) { - log.error("更新参数下发时发生异常,devcode:{},e:{}",devCode, e); + log.error("更新参数下发时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -81,7 +82,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理三码时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理三码时发生异常,devcode:{},e:{}", devCode, e); } } @@ -141,12 +142,12 @@ } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -160,6 +161,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -192,7 +195,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -214,7 +217,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -225,7 +229,7 @@ } catch (Exception e) { // e.printStackTrace(); // log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); - log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode,jsonArray.get(i).toString(), e); + log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); } } 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 d22cd0e..a911950 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -20,13 +21,16 @@ import com.casic.missiles.modular.device.service.IBusDeviceService; import com.casic.missiles.modular.device.service.IBusImeiIccidService; import com.casic.missiles.util.CommonUtil; +import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Comparator; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -152,6 +156,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -200,7 +206,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.contains("V") ? cell : cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); 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 c581072..e2b41dc 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -76,7 +77,7 @@ } } } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } else if (mType[4].equals(json.get("mType"))) {//三码存储 try { @@ -84,7 +85,7 @@ String iccid = jsonObject.get("iccid").toString(); imeiManager.saveData(devCode, imei, iccid); } catch (Exception e) { - log.error("处理日志时发生异常,devcode:{},e:{}",devCode, e); + log.error("处理日志时发生异常,devcode:{},e:{}", devCode, e); } } } @@ -164,6 +165,8 @@ busDeviceService.updateBusDeviceLogTime(devCode); return; } + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); @@ -189,7 +192,7 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); //4.存报警 //若没绑定井,则不产生报警 boolean alarmFlag = false; @@ -211,7 +214,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及设备状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell.concat("%"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); @@ -233,11 +237,11 @@ //系统没有相关报警事件配置,则舍弃 if (alarmDeviceRuleResponseDTO.isPresent()) { boolean flag = alarmRecordsService.isDeviceAlarmByCode(devCode, DictEnum.ALARM_LOW_CELL); - if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&& !flag) { + if (Double.valueOf(cell) <= Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && !flag) { alarmDeviceRuleResponseDTO.get().setOffDays(Integer.valueOf(cell)); alarmRecordsService.saveDeviceAlarms(devCode, jsonObject.getString("logTime"), busWellDTOList, alarmDeviceRuleResponseDTO); - }else if(Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays())&&flag){ - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_LOW_CELL); + } else if (Double.valueOf(cell) > Double.valueOf(alarmDeviceRuleResponseDTO.get().getOffDays()) && flag) { + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_LOW_CELL); } } } 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 f3e2991..58f59ae 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -331,7 +332,8 @@ } //5.清数据报警 if (ObjectUtil.isEmpty(alarmContent)) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, ObjectUtil.isNotEmpty(alarmContent) ? "2" : "1", BAT.concat("V"), CH4L.concat(",").concat(CH4R), ObjectUtil.isNotEmpty(alarmContent) ? alarmContent.substring(0, alarmContent.length() - 1) : "", logTime); 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 09007b7..4e7a7a0 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 @@ -1,8 +1,8 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DeviceTypeEnum; @@ -122,8 +122,6 @@ } - - private void processSingleData(PanDataDTO panDataDTO) { try { String devCode = panDataDTO.getDeviceCode(); @@ -167,7 +165,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas, alarmFlag ? "浓度达到".concat(gas).concat("PPM.M") : "", DateUtil.formatDateTime(new Date())); 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 acbf203..8da17be 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.data.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; @@ -136,15 +137,19 @@ .findFirst(); //系统没有相关报警事件配置,则舍弃 if (!alarmDeviceRuleResponseDTO.isPresent()) continue; -// //1.查询是否已存在该类报警 -// if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; -// //2.写入新的报警 -// alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); - - if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { - alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); - //更新设备报警状态 - busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + if (ObjectUtil.isNotEmpty(AlarmEnum.getValue(alarmType))) { + if (!alarmRecordsService.isWatchAlarms(devCode, alarmType)) { + alarmRecordsService.saveWatchAlarms(devCode, alarmType, logTime, logTime, busWellDTOList, alarmDeviceRuleResponseDTO.get().getAlarmTypeId(), alarmDeviceRuleResponseDTO.get().getAlarmLevelId(), alarmDeviceRuleResponseDTO.get().getAlarmTypeName(), DeviceTypeEnum.TubeOther.getName()); + //更新设备报警状态 + busDeviceService.updateBusDeviceStatus(devCode, AlarmEnum.getValue(alarmType)); + } + } else { + //1.查询是否已存在该类报警 + if (alarmRecordsService.isDeviceAlarmByCode(devCode, alarmType)) continue; + //2.写入新的报警 + alarmRecordsService.saveDeviceAlarms(devCode, logTime, busWellDTOList, alarmDeviceRuleResponseDTO); + //更新设备状态 + busDeviceService.updateBusDeviceStatus(devCode, DictEnum.DEVICE_FAILURE); } } catch (Exception e) { log.error("处理日志时发生异常,devcode:{},data:{},e:{}", devCode, jsonArray.get(i).toString(), e); @@ -152,7 +157,7 @@ } } //消除离线报警 - alarmRecordsService.cancelDeviceAlarm(devCode,DictEnum.ALARM_OFF_LINE); + alarmRecordsService.cancelDeviceAlarm(devCode, DictEnum.ALARM_OFF_LINE); } } @@ -166,6 +171,8 @@ JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = dataGasMapper.getListByDevCode(devCode); String bfcf = busDeviceService.getBfcf(devCode); + //排序 + jsonArray =CommonUtil.getJsonArr(jsonArray, "uptime"); for (int i = 0; i < jsonArray.size(); i++) { try { String gas = ((JSONObject) jsonArray.get(i)).getString("gasval"); @@ -198,10 +205,10 @@ if (i < jsonArray.size() - 1) continue; //3.清除设备告警 - alarmRecordsService.cancelDeviceAlarm(devCode,""); + alarmRecordsService.cancelDeviceAlarm(devCode, ""); //4.存报警 //若没绑定井,则不产生报警 - boolean alarmFlag = false; + boolean alarmFlag = false; if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { //获取报警规则 List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); @@ -220,7 +227,8 @@ } //5.清数据报警 if (!alarmFlag) { - alarmRecordsService.cancelDataAlarm(devCode); + if (CollectionUtil.isNotEmpty(busWellDTOList)) + alarmRecordsService.cancelDataAlarmByLedgerNumber(busWellDTOList.get(0).getTagNumber()); } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", vbat.concat("mV"), gas, alarmFlag ? gas.concat("%LEL") : "", logTime); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java index a5f32a6..a54c63a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipeMonitorController.java @@ -2,7 +2,6 @@ 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.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; @@ -29,7 +28,7 @@ public class BusPipeMonitorController extends ExportController { private final IBusLedgerPipeService iBusLedgerPipeService; - private final AbstractPermissionContext iCommonPermissionService; + @ApiOperation("查询分页接口,列表用") @PostMapping("/listPage") @@ -61,10 +60,10 @@ Assert.isFalse(Objects.isNull(requestDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); - return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(),requestDTO.getDevcode())); + return ReturnUtil.success(iBusLedgerPipeService.detail(requestDTO.getId(), requestDTO.getDevcode())); } -// @ApiOperation("查询接口,地图用") + // @ApiOperation("查询接口,地图用") // @PostMapping("/list") // @ResponseBody // public ReturnDTO list(@RequestBody BusLedgerDTO request) { @@ -85,7 +84,7 @@ @ApiOperation("监控设备维护记录(待开发)") @PostMapping("/repairLog") @ResponseBody - public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { + public ReturnDTO repairLog(@RequestBody MonitorDataRequestDTO requestDTO) { // Assert.isFalse(Objects.isNull(requestDTO.getWellId()), () -> { // throw new BusinessException(BusinessExceptionEnum.ID_NULL); // }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java new file mode 100644 index 0000000..49a98a7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/NcxPositionController.java @@ -0,0 +1,78 @@ +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.casic.missiles.dto.DeletesDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +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 2025-07-10 + */ +@Api(tags = "诺诚新指示带显示模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/ncxPosition") +public class NcxPositionController { + + private final INcxPositionService ncxPositionService; + + + @ApiOperation("查询") + @PostMapping("/list") + @ResponseBody + public ReturnDTO list(@RequestBody NcxPosition ncxPosition) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(ObjectUtil.isNotEmpty(ncxPosition.getId()), "ID", ncxPosition.getId()); + queryWrapper.like(ObjectUtil.isNotEmpty(ncxPosition.getDeviceCode()), "DEVICE_CODE", ncxPosition.getDeviceCode()); + return ReturnUtil.success(ncxPositionService.list(queryWrapper)); + } + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody NcxPosition ncxPosition) { + + return ReturnUtil.success(ncxPositionService.save(ncxPosition)); + } + + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody NcxPosition ncxPosition) { + Assert.isFalse(Objects.isNull(ncxPosition.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.updateById(ncxPosition)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody DeletesDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(ncxPositionService.removeByIds(idsDTO.getIds())); + } + +} + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java index f8b6309..3ecbd9e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BaseProductMapper.java @@ -25,13 +25,13 @@ Page pageList(Page page, @Param("request") BaseProductDTO request); - @Select("SELECT\n" + - "\tbp.id ,\n" + - "\tCONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`,\n" + - "\tbp.DEVICE_TYPE AS `deviceTypeId` \n" + - "FROM\n" + - "\t`base_product` bp\n" + - "\tLEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") + @Select("SELECT " + + " bp.id , " + + " CONCAT( bp.PRODUCT_NAME, '-', bp.DEVICE_MODEL, '/', bm.`NAME` ) AS `name`, " + + " bp.DEVICE_TYPE AS `deviceTypeId` " + + "FROM " + + " `base_product` bp " + + " LEFT JOIN bus_manufacturer bm ON bm.id = bp.MANUFACTURER_ID") List selectList(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.java new file mode 100644 index 0000000..f5e5bd7 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/NcxPositionMapper.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.NcxPosition; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 产品管理 Mapper 接口 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Mapper +public interface NcxPositionMapper extends BaseMapper { + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index ece5592..aa730fa 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -36,9 +36,9 @@ ) SELECT count(1) as `value`, bt.VALID as `name` FROM device_temp bt where bt.VALID>1 GROUP BY bt.VALID UNION ALL - SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE ='0' + SELECT count(1) as `value`, '0' as `name` FROM device_temp bt where bt.VALID='1' AND bt.ONLINE_STATE ='0' UNION ALL - SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID>0 AND bt.ONLINE_STATE >0 + SELECT count(1) as `value`, '1' as `name` FROM device_temp bt where bt.VALID ='1' AND bt.ONLINE_STATE >0 SELECT blp.*, + blp.PROPERTY_PERSON as personName, + blp.PROPERTY_PHONE as telephone, bd.DEVCODE, DATE_FORMAT(bd.INSTALL_DATE, '%Y-%m-%d') AS INSTALL_DATE , bt.TYPE_NAME, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml new file mode 100644 index 0000000..09e9704 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/NcxPositionMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + ID, DEVICE CODE, DEVICE ID, LNG GD, LAT GD, `TYPE`, TS + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 1cc8430..1e3d88e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -53,6 +53,12 @@ @ExcelProperty("位置类别") private String locationCategory; + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; + private String watchObject; private Long deviceType; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java index eae9ed5..bf6d6c8 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusPositionImportDTO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -38,4 +39,10 @@ private String locationCategory; @ExcelProperty("监测类型") private String type; + + @ExcelProperty("负责人") + private String propertyPerson; + + @ExcelProperty("联系电话") + private String propertyPhone; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java index 20c55ee..9df6a51 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDTO.java @@ -17,8 +17,8 @@ private String tagNumber; - @ApiModelProperty("名称") - private String tagName; +// @ApiModelProperty("名称") +// private String tagName; @ApiModelProperty("类型") @@ -40,17 +40,17 @@ // @ApiModelProperty("进站压力") // private String inPress; - @ApiModelProperty("压力级制") - private String pressType; +// @ApiModelProperty("压力级制") +// private String pressType; // @ApiModelProperty("出站压力") // private String outPress; // @ApiModelProperty("上传时间") // private Date logTime; - private String flag; +// private String flag; - @ApiModelProperty("上传值") - private String value; +// @ApiModelProperty("上传值") +// private String value; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java new file mode 100644 index 0000000..5678c6b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/StationDataDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StationDataDTO { + + + private String flag; + + @ApiModelProperty("上传值") + private String value; + + @ApiModelProperty("名称") + private String tagName; + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java index 5cdf120..a52c43f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusLedgerPipe.java @@ -115,6 +115,15 @@ @TableField("MONITOR_STATE") private String monitorState; + + @ApiModelProperty("产权单位联系人") + @TableField("PROPERTY_PERSON") + private String propertyPerson; + + @ApiModelProperty("产权单位联系电话") + @TableField("PROPERTY_PHONE") + private String propertyPhone; + @ExcelProperty(value = "管理单位", order = 7) @ApiModelProperty("管理单位名称") @TableField(exist = false) @@ -161,7 +170,8 @@ public BusLedgerPipe(Long id, String pipeCode, String ledgerName, String tagNumber, String lngGaode, String latGaode, String position, Long deptid, String devcode, String type, - String locationCategory, String area) { + String locationCategory, String area, + String propertyPerson,String propertyPhone) { this.id = id; this.pipeCode = pipeCode; this.ledgerName = ledgerName; @@ -175,6 +185,8 @@ this.type = type; this.locationCategory = locationCategory; this.area = area; + this.propertyPerson = propertyPerson; + this.propertyPhone = propertyPhone; } public static List convertDeviceList(List dtoList) { @@ -193,7 +205,9 @@ "", positionImportDTO.getType(), positionImportDTO.getLocationCategory(), - CommonUtil.getAreaCode(positionImportDTO.getPosition()))); + CommonUtil.getAreaCode(positionImportDTO.getPosition()), + positionImportDTO.getPropertyPerson(), + positionImportDTO.getPropertyPhone())); }); return busDeviceList; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java new file mode 100644 index 0000000..a0da370 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/NcxPosition.java @@ -0,0 +1,60 @@ +package com.casic.missiles.modular.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +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.time.LocalDateTime; + +/** + *

+ * 产品管理 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Getter +@Setter +@TableName("ncx_position") +@ApiModel(value = "NcxPosition对象", description = "产品管理") +public class NcxPosition implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("设备编号") + @TableField("DEVICE_CODE") + private String deviceCode; + + @ApiModelProperty("设备id") + @TableField("DEVICE_ID") + private Long deviceId; + + @ApiModelProperty("经度") + @TableField("LNG_GD") + private String lngGd; + + @ApiModelProperty("纬度") + @TableField("LAT_GD") + private String latGd; + + @ApiModelProperty("1,左;2,右") + @TableField("`TYPE`") + private String type; + + @ApiModelProperty("创建时间") + @TableField("TS") + private LocalDateTime ts; + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java new file mode 100644 index 0000000..ce4d020 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/INcxPositionService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.entity.NcxPosition; + +/** + *

+ * 产品管理 服务类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +public interface INcxPositionService extends IService { + +} 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 352c721..45f4a4f 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 @@ -432,7 +432,8 @@ BusLedgerPipe busLedgerPipe = new BusLedgerPipe(pipeLedgerId, deviceImportDTO.getPipeCode(), deviceImportDTO.getTagNumber(), deviceImportDTO.getTagNumber(), deviceImportDTO.getLng(), deviceImportDTO.getLat(), deviceImportDTO.getPosition(), deviceImportDTO.getDeptid(), deviceImportDTO.getDevCode(), - deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition())); + deviceImportDTO.getWatchObject(), deviceImportDTO.getLocationCategory(), CommonUtil.getAreaCode(deviceImportDTO.getPosition()), + deviceImportDTO.getPropertyPerson(), deviceImportDTO.getPropertyPhone()); // busLedgerPipe = iBusLedgerPipeService.saveBusLedgerPipe(busLedgerPipe); pipeList.add(busLedgerPipe); deviceImportDTO.setLedgerIds(Arrays.asList(pipeLedgerId)); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java index b230a73..de45349 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusGridServiceImpl.java @@ -8,9 +8,11 @@ import com.casic.missiles.modular.device.dto.SyncUserDTO; import com.casic.missiles.modular.device.entity.BdcRegionArea; import com.casic.missiles.modular.device.entity.BusGrid; +import com.casic.missiles.modular.device.entity.CtUser; import com.casic.missiles.modular.device.service.IBdcRegionAreaService; import com.casic.missiles.modular.device.service.IBusGridService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -18,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -37,14 +40,14 @@ @Override public boolean synAllGrids() { List bdcRegionAreaList = iBdcRegionAreaService.getBdcRegionAreaList(); + bdcRegionAreaList = bdcRegionAreaList.stream().filter(CommonUtil.distinctByProperty(BdcRegionArea::getRegionCode)).collect(Collectors.toList()); List deptList = abstractDeptService.getListByTips(""); List syncUserDTOList = this.baseMapper.getSyncUserDTOList(); List busGrids = this.list(); List busGridList = new ArrayList<>(); for (BdcRegionArea bdcRegionArea : bdcRegionAreaList) { BusGrid busGrid = new BusGrid(); - - Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getSyncId(), bdcRegionArea.getRegionAreaId())).findFirst(); + Optional firstBusGrid = busGrids.stream().filter(busGrid1 -> Objects.equals(busGrid1.getGridCode(), bdcRegionArea.getRegionCode())).findFirst(); BusGrid busGridOld = null; if (firstBusGrid.isPresent()) { busGridOld = firstBusGrid.get(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java new file mode 100644 index 0000000..421d824 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/NcxPositionServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.device.dao.NcxPositionMapper; +import com.casic.missiles.modular.device.entity.NcxPosition; +import com.casic.missiles.modular.device.service.INcxPositionService; +import org.springframework.stereotype.Service; + +/** + *

+ * 产品管理 服务实现类 + *

+ * + * @author zt + * @since 2025-07-10 + */ +@Service +public class NcxPositionServiceImpl extends ServiceImpl implements INcxPositionService { + +} 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 index 863b091..2fabbf1 100644 --- 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 @@ -78,8 +78,9 @@ //更新最新状态 List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); - //添加流转日志 - iApprovalLogService.saveSuspendLogs(alarmRecordsList); + //更新流转日志 + iApprovalLogService.updateSuspendLogs(suspendLogList); +// iApprovalLogService.saveSuspendLogs(alarmRecordsList); } } catch (Exception ex) { logger.error(ex.getMessage(), ex); @@ -87,7 +88,7 @@ } - @Scheduled(cron = "0 0 23 * * ?") + @Scheduled(cron = "0 48 23 * * ?") public void executeSyncData() { logger.info("开始执行全量同步数据任务"); if (!enabled) { @@ -101,7 +102,7 @@ //同步用户 iCtUserService.synAllUsers(); //同步网格 - iBusGridService.synAllGrids(); +// iBusGridService.synAllGrids(); //同步任务监控日志 iMonitorLogService.saveMonitorLog("synchronous","1","部门、台账、用户同步任务","1"); diff --git a/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java new file mode 100644 index 0000000..ddd4a19 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/dto/CodesDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: for batch use + * @Author: zt + * @Date: 2022/11/26 9:51 + */ +@Data +public class CodesDTO { + @NotNull + private List codes; +} diff --git a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 60ea0cf..5cc9ede 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -29,6 +29,8 @@ MONITOR_VALID_FAILED(2099, "云台登录地址重复"), + LEDGER_CODE_NULL(2055, "位号不能为空"), + DEVICE_DUPLICATE(2011, "设备编号重复"); diff --git a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java index 0ff43b6..2bf57ab 100644 --- a/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java +++ b/casic-public/src/main/java/com/casic/missiles/util/CommonUtil.java @@ -2,15 +2,18 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; public class CommonUtil { // public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -112,6 +115,31 @@ return ""; } + + public static JSONArray getJsonArr(JSONArray jsonArray,String fileName){ + try { + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + list.add(jsonArray.getJSONObject(i)); + } + + Collections.sort(list, new Comparator() { + @Override + public int compare(JSONObject o1, JSONObject o2) { + // 根据时间字段排序 + return Long.valueOf(o1.getString(fileName)) - Long.valueOf(o2.getString(fileName))>=0? + 1:-1; + } + }); + return JSONArray.parseArray(JSON.toJSONString(list)); + + }catch (Exception e){ + e.printStackTrace(); + } + + return jsonArray; + } + public static void main(String[] args) { String ss = getAreaCode("东城"); System.out.println(ss); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index 5604d2e..fa308a1 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -66,7 +66,7 @@ * * 先去广播,再将自己加入到channelGroup中 */ -// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); +// channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入 "); // channelGroup.add(channel); DeviceCommon.addChannel(channel.id().asLongText(), channel); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java index 51b0dd0..30bd05c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java @@ -361,13 +361,13 @@ System.out.println("-----BEGIN PUBLIC KEY-----"); System.out.println(publicKey); System.out.println("-----END PUBLIC KEY-----"); - System.out.println("\n"); + System.out.println(" "); System.out.println("私钥:(填充方式:PKCS1_PADDING,输出类型:base64,字符集:utf8编码)"); System.out.println("-----BEGIN RSA PRIVATE KEY-----"); System.out.println(privateKey); System.out.println("-----END RSA PRIVATE KEY-----"); - System.out.println("\n"); + System.out.println(" "); // 待加密内容,例:123 String s = "01030400000014FA3C000159543230323430393133"; @@ -376,7 +376,7 @@ // 打印加密后内容 System.out.println("密文:(填充方式:PKCS1_PADDING,输出类型:hex,字符集:utf8编码)"); System.out.println(encrypt); - System.out.println("\n"); + System.out.println(" "); // 进行RSA解密 String decrypt = decrypt(encrypt, BR_PRIVATE_KEY); 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 1eb5c78..670d6ac 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 @@ -33,7 +33,7 @@ FastAutoGenerator.create( //数据源配置,url需要修改 - new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") + new DataSourceConfig.Builder("jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true", "root", "Casic203") .dbQuery(new MySqlQuery()) .schema("schema") .typeConvert(new MySqlTypeConvert()) @@ -65,7 +65,7 @@ //策略配置 .strategyConfig(builder -> { - builder.addInclude("data_gasliquid_liquid") // 设置需要生成的表名 + builder.addInclude("ncx_postion") // 设置需要生成的表名 .addTablePrefix() // 设置过滤表前缀 .entityBuilder() //实体类配置 .enableLombok() //使用lombok diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 425ab6d..02db5ea 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,12 +4,12 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true -# username: root -# password: Casic203 - url: jdbc:mysql://172.27.34.168:3316/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true - username: bjwxduser - password: hpQEn5my9md#U + url: jdbc:mysql://111.198.10.15:11336/casic_iot_br1?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true + username: root + password: Casic203 +# url: jdbc:mysql://172.27.34.168:3316/casic_iot_platform?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&allowMultiQueries=true&rewriteBatchedStatements=true +# username: bjwxduser +# password: hpQEn5my9md#U jms: pub-sub-domain: true # session:b diff --git a/casic-web/src/main/resources/config/temp/device_template.xlsx b/casic-web/src/main/resources/config/temp/device_template.xlsx index 06e46e4..0f1fc22 100644 --- a/casic-web/src/main/resources/config/temp/device_template.xlsx +++ b/casic-web/src/main/resources/config/temp/device_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/pipe_info_template.xlsx b/casic-web/src/main/resources/config/temp/pipe_info_template.xlsx index 1e30279..09c960f 100644 --- a/casic-web/src/main/resources/config/temp/pipe_info_template.xlsx +++ b/casic-web/src/main/resources/config/temp/pipe_info_template.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/wellInfo_template.xlsx b/casic-web/src/main/resources/config/temp/wellInfo_template.xlsx index 021b365..a5b763c 100644 --- a/casic-web/src/main/resources/config/temp/wellInfo_template.xlsx +++ b/casic-web/src/main/resources/config/temp/wellInfo_template.xlsx Binary files differ