diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 6c7173b..28be73d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -65,7 +65,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(commonServer.getDeptNamesByDeptId(pipe.getDeptid())); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); }); return pipePage; } @@ -78,7 +78,7 @@ List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +91,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 6c7173b..28be73d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -65,7 +65,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(commonServer.getDeptNamesByDeptId(pipe.getDeptid())); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); }); return pipePage; } @@ -78,7 +78,7 @@ List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +91,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index c98ec10..597306c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -55,7 +55,7 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); }); return pageList; } @@ -290,7 +290,8 @@ busLedger.setPropertyPhone(syncTagDTO.getPropertyPhone()); busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); - busLedger.setType("1"); + busLedger.setValid("1"); + busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 6c7173b..28be73d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -65,7 +65,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(commonServer.getDeptNamesByDeptId(pipe.getDeptid())); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); }); return pipePage; } @@ -78,7 +78,7 @@ List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +91,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index c98ec10..597306c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -55,7 +55,7 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); }); return pageList; } @@ -290,7 +290,8 @@ busLedger.setPropertyPhone(syncTagDTO.getPropertyPhone()); busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); - busLedger.setType("1"); + busLedger.setValid("1"); + busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2571222..96fed06 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -60,7 +61,7 @@ busPipeline.setPressTypeName(abstractDictService.getDictNameByCode("wellType", busPipeline.getPressType())); - busPipeline.setDeptName(commonServer.getDeptNamesByDeptId(busPipeline.getDeptid())); + busPipeline.setDeptName(ObjectUtil.isNotEmpty(busPipeline.getDeptid())?commonServer.getDeptNamesByDeptId(busPipeline.getDeptid()):""); }); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 6c7173b..28be73d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -65,7 +65,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(commonServer.getDeptNamesByDeptId(pipe.getDeptid())); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); }); return pipePage; } @@ -78,7 +78,7 @@ List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +91,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index c98ec10..597306c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -55,7 +55,7 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); }); return pageList; } @@ -290,7 +290,8 @@ busLedger.setPropertyPhone(syncTagDTO.getPropertyPhone()); busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); - busLedger.setType("1"); + busLedger.setValid("1"); + busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2571222..96fed06 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -60,7 +61,7 @@ busPipeline.setPressTypeName(abstractDictService.getDictNameByCode("wellType", busPipeline.getPressType())); - busPipeline.setDeptName(commonServer.getDeptNamesByDeptId(busPipeline.getDeptid())); + busPipeline.setDeptName(ObjectUtil.isNotEmpty(busPipeline.getDeptid())?commonServer.getDeptNamesByDeptId(busPipeline.getDeptid()):""); }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index fe83cce..06470f7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -50,7 +51,7 @@ busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 监控状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 监控状态字典值 }); return pageList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 6c7173b..28be73d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -65,7 +65,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(commonServer.getDeptNamesByDeptId(pipe.getDeptid())); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); }); return pipePage; } @@ -78,7 +78,7 @@ List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +91,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index c98ec10..597306c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -55,7 +55,7 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); }); return pageList; } @@ -290,7 +290,8 @@ busLedger.setPropertyPhone(syncTagDTO.getPropertyPhone()); busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); - busLedger.setType("1"); + busLedger.setValid("1"); + busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2571222..96fed06 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -60,7 +61,7 @@ busPipeline.setPressTypeName(abstractDictService.getDictNameByCode("wellType", busPipeline.getPressType())); - busPipeline.setDeptName(commonServer.getDeptNamesByDeptId(busPipeline.getDeptid())); + busPipeline.setDeptName(ObjectUtil.isNotEmpty(busPipeline.getDeptid())?commonServer.getDeptNamesByDeptId(busPipeline.getDeptid()):""); }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index fe83cce..06470f7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -50,7 +51,7 @@ busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 监控状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 监控状态字典值 }); return pageList; } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java index d30d1ba..b372b6b 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java @@ -18,7 +18,7 @@ H2s("硫化氢检测终端", 14,"data_h2s"), PRESS("压力监测终端", 15,"data_press"), KAD("点型可燃气体探测器", 16,"data_kad"), - PANTILT("激光甲烷云台", 17,"data_pantilt"), + PANTILT("激光甲烷云台", 17,"data_pan_gas"), PRESSURE("压力监测终端", 18,"data_pressure"), GasDector("点型可燃气体探测器", 19,"data_gas_dector"); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 6c7173b..28be73d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -65,7 +65,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(commonServer.getDeptNamesByDeptId(pipe.getDeptid())); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); }); return pipePage; } @@ -78,7 +78,7 @@ List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +91,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index c98ec10..597306c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -55,7 +55,7 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); }); return pageList; } @@ -290,7 +290,8 @@ busLedger.setPropertyPhone(syncTagDTO.getPropertyPhone()); busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); - busLedger.setType("1"); + busLedger.setValid("1"); + busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2571222..96fed06 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -60,7 +61,7 @@ busPipeline.setPressTypeName(abstractDictService.getDictNameByCode("wellType", busPipeline.getPressType())); - busPipeline.setDeptName(commonServer.getDeptNamesByDeptId(busPipeline.getDeptid())); + busPipeline.setDeptName(ObjectUtil.isNotEmpty(busPipeline.getDeptid())?commonServer.getDeptNamesByDeptId(busPipeline.getDeptid()):""); }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index fe83cce..06470f7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -50,7 +51,7 @@ busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 监控状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 监控状态字典值 }); return pageList; } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java index d30d1ba..b372b6b 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java @@ -18,7 +18,7 @@ H2s("硫化氢检测终端", 14,"data_h2s"), PRESS("压力监测终端", 15,"data_press"), KAD("点型可燃气体探测器", 16,"data_kad"), - PANTILT("激光甲烷云台", 17,"data_pantilt"), + PANTILT("激光甲烷云台", 17,"data_pan_gas"), PRESSURE("压力监测终端", 18,"data_pressure"), GasDector("点型可燃气体探测器", 19,"data_gas_dector"); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java index 1c80520..1d4fd0d 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -1,20 +1,30 @@ package com.casic.missiles.modular.ptz.controller; +import com.alibaba.fastjson.JSON; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.device.dto.PtzPlayBackDTO; +import com.casic.missiles.modular.device.dto.PtzXtControlDTO; import com.casic.missiles.modular.ptz.service.IPtzService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -@Api(tags = "云台控制模块") +import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +@Api(tags = "云台管理模块") @RequiredArgsConstructor +@Slf4j @RestController @RequestMapping("/ptz") public class PtzController { - + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3, 6, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); private final IPtzService iPtzService; @ApiOperation("云台控制") @@ -23,4 +33,53 @@ public ReturnDTO control(@RequestBody PtzControlDTO request) { return ReturnUtil.success(iPtzService.control(request)); } + + @ApiOperation("实时接收第三方数据") + @PostMapping("/acceptGasData") + @ResponseBody + public ReturnDTO acceptGasData(@RequestBody Map dataParams) { + threadPoolExecutor.execute( + () -> { + String receiveData = JSON.toJSONString(dataParams); + log.info(">>>>>>接收场站云台数据<<<<<<:" + receiveData); + iPtzService.acceptGasData(dataParams); + } + ); + return ReturnUtil.success(); + } + + @ApiOperation("实时接收Ai报警数据") + @PostMapping("/acceptAlarmData") + @ResponseBody + public ReturnDTO acceptAlarmData(@RequestBody Map dataParams) { + threadPoolExecutor.execute( + () -> { + String receiveData = JSON.toJSONString(dataParams); + log.info(">>>>>>接收ai报警数据<<<<<<:" + receiveData); + iPtzService.acceptAlarmData(dataParams); + } + ); + return ReturnUtil.success(); + } + + @ApiOperation("获取迅腾云台设备编号") + @PostMapping("/getOneDevice") + @ResponseBody + public ReturnDTO getOneDevice(String deviceCode) { + return ReturnUtil.success(iPtzService.getOneDevice(deviceCode)); + } + + @ApiOperation("设备控制接口") + @PostMapping("/controCearm") + @ResponseBody + public ReturnDTO controCearm(@RequestBody PtzXtControlDTO ptzXtControlDTO) { + return ReturnUtil.success(iPtzService.controCearm(ptzXtControlDTO)); + } + + @ApiOperation("视频回放查询接口") + @PostMapping("/getPlayBackUrl") + @ResponseBody + public ReturnDTO getPlayBackUrl(@RequestBody PtzPlayBackDTO ptzPlayBackDTO) { + return ReturnUtil.success(iPtzService.getPlayBackUrl(ptzPlayBackDTO)); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 6c7173b..28be73d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -65,7 +65,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(commonServer.getDeptNamesByDeptId(pipe.getDeptid())); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); }); return pipePage; } @@ -78,7 +78,7 @@ List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +91,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index c98ec10..597306c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -55,7 +55,7 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); }); return pageList; } @@ -290,7 +290,8 @@ busLedger.setPropertyPhone(syncTagDTO.getPropertyPhone()); busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); - busLedger.setType("1"); + busLedger.setValid("1"); + busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2571222..96fed06 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -60,7 +61,7 @@ busPipeline.setPressTypeName(abstractDictService.getDictNameByCode("wellType", busPipeline.getPressType())); - busPipeline.setDeptName(commonServer.getDeptNamesByDeptId(busPipeline.getDeptid())); + busPipeline.setDeptName(ObjectUtil.isNotEmpty(busPipeline.getDeptid())?commonServer.getDeptNamesByDeptId(busPipeline.getDeptid()):""); }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index fe83cce..06470f7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -50,7 +51,7 @@ busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 监控状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 监控状态字典值 }); return pageList; } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java index d30d1ba..b372b6b 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java @@ -18,7 +18,7 @@ H2s("硫化氢检测终端", 14,"data_h2s"), PRESS("压力监测终端", 15,"data_press"), KAD("点型可燃气体探测器", 16,"data_kad"), - PANTILT("激光甲烷云台", 17,"data_pantilt"), + PANTILT("激光甲烷云台", 17,"data_pan_gas"), PRESSURE("压力监测终端", 18,"data_pressure"), GasDector("点型可燃气体探测器", 19,"data_gas_dector"); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java index 1c80520..1d4fd0d 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -1,20 +1,30 @@ package com.casic.missiles.modular.ptz.controller; +import com.alibaba.fastjson.JSON; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.device.dto.PtzPlayBackDTO; +import com.casic.missiles.modular.device.dto.PtzXtControlDTO; import com.casic.missiles.modular.ptz.service.IPtzService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -@Api(tags = "云台控制模块") +import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +@Api(tags = "云台管理模块") @RequiredArgsConstructor +@Slf4j @RestController @RequestMapping("/ptz") public class PtzController { - + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3, 6, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); private final IPtzService iPtzService; @ApiOperation("云台控制") @@ -23,4 +33,53 @@ public ReturnDTO control(@RequestBody PtzControlDTO request) { return ReturnUtil.success(iPtzService.control(request)); } + + @ApiOperation("实时接收第三方数据") + @PostMapping("/acceptGasData") + @ResponseBody + public ReturnDTO acceptGasData(@RequestBody Map dataParams) { + threadPoolExecutor.execute( + () -> { + String receiveData = JSON.toJSONString(dataParams); + log.info(">>>>>>接收场站云台数据<<<<<<:" + receiveData); + iPtzService.acceptGasData(dataParams); + } + ); + return ReturnUtil.success(); + } + + @ApiOperation("实时接收Ai报警数据") + @PostMapping("/acceptAlarmData") + @ResponseBody + public ReturnDTO acceptAlarmData(@RequestBody Map dataParams) { + threadPoolExecutor.execute( + () -> { + String receiveData = JSON.toJSONString(dataParams); + log.info(">>>>>>接收ai报警数据<<<<<<:" + receiveData); + iPtzService.acceptAlarmData(dataParams); + } + ); + return ReturnUtil.success(); + } + + @ApiOperation("获取迅腾云台设备编号") + @PostMapping("/getOneDevice") + @ResponseBody + public ReturnDTO getOneDevice(String deviceCode) { + return ReturnUtil.success(iPtzService.getOneDevice(deviceCode)); + } + + @ApiOperation("设备控制接口") + @PostMapping("/controCearm") + @ResponseBody + public ReturnDTO controCearm(@RequestBody PtzXtControlDTO ptzXtControlDTO) { + return ReturnUtil.success(iPtzService.controCearm(ptzXtControlDTO)); + } + + @ApiOperation("视频回放查询接口") + @PostMapping("/getPlayBackUrl") + @ResponseBody + public ReturnDTO getPlayBackUrl(@RequestBody PtzPlayBackDTO ptzPlayBackDTO) { + return ReturnUtil.success(iPtzService.getPlayBackUrl(ptzPlayBackDTO)); + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java index 30cc50c..5d625af 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java @@ -1,9 +1,23 @@ package com.casic.missiles.modular.ptz.service; import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.device.dto.PtzPlayBackDTO; +import com.casic.missiles.modular.device.dto.PtzXtControlDTO; + +import java.util.Map; public interface IPtzService { boolean control(PtzControlDTO request); + boolean acceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + + boolean controCearm(PtzXtControlDTO ptzXtControlDTO); + + String getPlayBackUrl(PtzPlayBackDTO ptzPlayBackDTO); + + String getOneDevice(String deviceCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 6c7173b..28be73d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -65,7 +65,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(commonServer.getDeptNamesByDeptId(pipe.getDeptid())); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); }); return pipePage; } @@ -78,7 +78,7 @@ List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +91,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index c98ec10..597306c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -55,7 +55,7 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); }); return pageList; } @@ -290,7 +290,8 @@ busLedger.setPropertyPhone(syncTagDTO.getPropertyPhone()); busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); - busLedger.setType("1"); + busLedger.setValid("1"); + busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2571222..96fed06 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -60,7 +61,7 @@ busPipeline.setPressTypeName(abstractDictService.getDictNameByCode("wellType", busPipeline.getPressType())); - busPipeline.setDeptName(commonServer.getDeptNamesByDeptId(busPipeline.getDeptid())); + busPipeline.setDeptName(ObjectUtil.isNotEmpty(busPipeline.getDeptid())?commonServer.getDeptNamesByDeptId(busPipeline.getDeptid()):""); }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index fe83cce..06470f7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -50,7 +51,7 @@ busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 监控状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 监控状态字典值 }); return pageList; } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java index d30d1ba..b372b6b 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java @@ -18,7 +18,7 @@ H2s("硫化氢检测终端", 14,"data_h2s"), PRESS("压力监测终端", 15,"data_press"), KAD("点型可燃气体探测器", 16,"data_kad"), - PANTILT("激光甲烷云台", 17,"data_pantilt"), + PANTILT("激光甲烷云台", 17,"data_pan_gas"), PRESSURE("压力监测终端", 18,"data_pressure"), GasDector("点型可燃气体探测器", 19,"data_gas_dector"); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java index 1c80520..1d4fd0d 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -1,20 +1,30 @@ package com.casic.missiles.modular.ptz.controller; +import com.alibaba.fastjson.JSON; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.device.dto.PtzPlayBackDTO; +import com.casic.missiles.modular.device.dto.PtzXtControlDTO; import com.casic.missiles.modular.ptz.service.IPtzService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -@Api(tags = "云台控制模块") +import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +@Api(tags = "云台管理模块") @RequiredArgsConstructor +@Slf4j @RestController @RequestMapping("/ptz") public class PtzController { - + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3, 6, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); private final IPtzService iPtzService; @ApiOperation("云台控制") @@ -23,4 +33,53 @@ public ReturnDTO control(@RequestBody PtzControlDTO request) { return ReturnUtil.success(iPtzService.control(request)); } + + @ApiOperation("实时接收第三方数据") + @PostMapping("/acceptGasData") + @ResponseBody + public ReturnDTO acceptGasData(@RequestBody Map dataParams) { + threadPoolExecutor.execute( + () -> { + String receiveData = JSON.toJSONString(dataParams); + log.info(">>>>>>接收场站云台数据<<<<<<:" + receiveData); + iPtzService.acceptGasData(dataParams); + } + ); + return ReturnUtil.success(); + } + + @ApiOperation("实时接收Ai报警数据") + @PostMapping("/acceptAlarmData") + @ResponseBody + public ReturnDTO acceptAlarmData(@RequestBody Map dataParams) { + threadPoolExecutor.execute( + () -> { + String receiveData = JSON.toJSONString(dataParams); + log.info(">>>>>>接收ai报警数据<<<<<<:" + receiveData); + iPtzService.acceptAlarmData(dataParams); + } + ); + return ReturnUtil.success(); + } + + @ApiOperation("获取迅腾云台设备编号") + @PostMapping("/getOneDevice") + @ResponseBody + public ReturnDTO getOneDevice(String deviceCode) { + return ReturnUtil.success(iPtzService.getOneDevice(deviceCode)); + } + + @ApiOperation("设备控制接口") + @PostMapping("/controCearm") + @ResponseBody + public ReturnDTO controCearm(@RequestBody PtzXtControlDTO ptzXtControlDTO) { + return ReturnUtil.success(iPtzService.controCearm(ptzXtControlDTO)); + } + + @ApiOperation("视频回放查询接口") + @PostMapping("/getPlayBackUrl") + @ResponseBody + public ReturnDTO getPlayBackUrl(@RequestBody PtzPlayBackDTO ptzPlayBackDTO) { + return ReturnUtil.success(iPtzService.getPlayBackUrl(ptzPlayBackDTO)); + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java index 30cc50c..5d625af 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java @@ -1,9 +1,23 @@ package com.casic.missiles.modular.ptz.service; import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.device.dto.PtzPlayBackDTO; +import com.casic.missiles.modular.device.dto.PtzXtControlDTO; + +import java.util.Map; public interface IPtzService { boolean control(PtzControlDTO request); + boolean acceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + + boolean controCearm(PtzXtControlDTO ptzXtControlDTO); + + String getPlayBackUrl(PtzPlayBackDTO ptzPlayBackDTO); + + String getOneDevice(String deviceCode); + } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java index d3c6c4d..81ddba0 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java @@ -1,14 +1,80 @@ package com.casic.missiles.modular.ptz.service.impl; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.modular.data.service.IDataPanGasService; import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.device.dto.PtzPlayBackDTO; +import com.casic.missiles.modular.device.dto.PtzXtControlDTO; import com.casic.missiles.modular.netty.DeviceCommon; import com.casic.missiles.modular.ptz.service.IPtzService; +import com.casic.missiles.util.HttpClientUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.util.Map; + +@RequiredArgsConstructor @Service public class PtzServiceImpl implements IPtzService { + + @Value("${casic.brPanGetDevcodeUrl}") + private String brPanGetDevcodeUrl; + @Value("${casic.brPanControlUrl}") + private String brPanControlUrl; + @Value("${casic.brPanVideoUrl}") + private String brPanVideoUrl; + private final IDataPanGasService iDataPanGasService; + @Override public boolean control(PtzControlDTO request) { return DeviceCommon.sendMsg(request.getDevCode(), request.getInstructions()); } + + @Override + public boolean acceptGasData(Map dataParams) { + return iDataPanGasService.processAcceptGasData(dataParams); + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + return iDataPanGasService.acceptAlarmData(dataParams); + } + + @Override + public String getOneDevice(String deviceCode) { + String result = HttpClientUtils.get(brPanGetDevcodeUrl + "/" + deviceCode); + if (ObjectUtil.isNotEmpty(result)) { + JSONObject jsonObject = JSON.parseObject(result); + if ("200".equals(jsonObject.getString("code"))) { + JSONObject dataJson = jsonObject.getJSONObject("data"); + return dataJson.getString("deviceId"); + } + } + return ""; + } + + @Override + public boolean controCearm(PtzXtControlDTO ptzXtControlDTO) { + JSONObject json = (JSONObject) JSONObject.toJSON(ptzXtControlDTO); + String result = HttpClientUtils.post(brPanControlUrl, json.toJSONString()); + //toDo:解析后返回 + return true; + } + + @Override + public String getPlayBackUrl(PtzPlayBackDTO ptzPlayBackDTO) { + JSONObject json = (JSONObject) JSONObject.toJSON(ptzPlayBackDTO); + String result = HttpClientUtils.post(brPanVideoUrl, json.toJSONString()); + if (ObjectUtil.isNotEmpty(result)) { + JSONObject jsonObject = JSON.parseObject(result); + if ("200".equals(jsonObject.getString("code"))) { + JSONObject dataJson = jsonObject.getJSONObject("data"); + return dataJson.getString("url"); + } + } + return ""; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java index b79e5ac..67da40a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRuleMapper.java @@ -23,8 +23,9 @@ @Mapper public interface AlarmRuleMapper extends BaseMapper { - @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + + @Select(" select ar.ALARM_LEVEL_ID as alarmLevelId ,ar.PRODUCT_ID as productId ,ar.ALARM_THRESHOLD as alarmThreshold,ar.ALARM_TYPE_ID as alarmTypeId,at.ALARM_TYPE as alarmTypeName from alarm_rule ar " + " LEFT JOIN alarm_type at on at.ID=ar.ALARM_TYPE_ID " + + "where ar.PRODUCT_ID in(SELECT bd.PRODUCT_ID FROM `bus_device` bd " + " where bd.DEVCODE= #{devCode} and bd.VALID=1 " + ") and ar.ALARM_JUDGE_METHOD=1 order by ALARM_THRESHOLD desc") List getRuleListByCode(@Param("devCode") String devCode); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 115eecf..ae2e949 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 @@ -87,7 +87,7 @@ Page responseDTOPage = this.baseMapper.tracksList(page, request, commonServer.getDeptScopeIds(request.getDeptId())); List trackResponseDTOList = responseDTOPage.getRecords(); trackResponseDTOList.forEach(trackResponseDTO -> { - trackResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid())); + trackResponseDTO.setDeptName(ObjectUtil.isNotEmpty(trackResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(trackResponseDTO.getDeptid()):""); trackResponseDTO.setCurrentPosition(trackResponseDTO.getLngGaode() + "," + trackResponseDTO.getLatGaode()); }); return responseDTOPage; @@ -129,7 +129,7 @@ alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "是" : "否"); alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid())); + alarmRecords.setDeptName(ObjectUtil.isNotEmpty(alarmRecords.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecords.getDeptid()):""); alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); }); return alarmRecordsPage; @@ -170,7 +170,7 @@ DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); alarmDetail.setCancelDuration(TimeConverter(alarmDetail.getCancelDuration())); alarmDetail.setProcessDuration(TimeConverter(alarmDetail.getProcessDuration())); - alarmDetail.setDeptName(commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid())); + alarmDetail.setDeptName(ObjectUtil.isNotEmpty(alarmDetail.getDeptid())?commonServer.getDeptNamesByDeptId(alarmDetail.getDeptid()):""); // alarmDetail.setAddress(alarmDetail.getTagNumber().concat("|").concat(alarmDetail.getLedgerName())); alarmDetail.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmDetail.getAlarmCategory())); return alarmDetail; @@ -191,7 +191,7 @@ public List batchExportDeviceAlarmHistoryList(AlarmRecordDTO request) { List exportDTOList = this.baseMapper.batchExportDeviceAlarmHistoryList(request, commonServer.getDeptScopeIds(request.getDeptId())); exportDTOList.forEach(deviceAlarm -> { - deviceAlarm.setDeptName(commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid())); + deviceAlarm.setDeptName(ObjectUtil.isNotEmpty(deviceAlarm.getDeptid())?commonServer.getDeptNamesByDeptId(deviceAlarm.getDeptid()):""); deviceAlarm.setCancelDuration(TimeConverter(deviceAlarm.getCancelDuration())); deviceAlarm.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", deviceAlarm.getAlarmCategory())); deviceAlarm.setRealAlarm(DictEnum.REAL_ALARM.equals(deviceAlarm.getRealAlarm()) ? "是" : "否"); @@ -491,7 +491,7 @@ alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setRealAlarm(DictEnum.REAL_ALARM.equals(alarmRecordExportDTO.getRealAlarm()) ? "是" : "否"); alarmRecordExportDTO.setCancelDuration(TimeConverter(alarmRecordExportDTO.getCancelDuration())); - alarmRecordExportDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordExportDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid()):""); alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); }); return alarmRecordExportDTOList; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index ab6ad49..33fb05f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -49,7 +49,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, commonServer.getDeptScopeIds(null), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); - alarmPositionResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); + alarmPositionResponseDTO.setDeptName(ObjectUtil.isNotEmpty(alarmPositionResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid()):""); }); return alarmPositionResponseDTOList; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index 3f03593..38598a6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -178,7 +178,7 @@ List alarmRecordDpDTOList = this.baseMapper.alarmList(commonServer.getDeptIds()); alarmRecordDpDTOList.forEach(alarmRecordDpDTO -> { alarmRecordDpDTO.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecordDpDTO.getProcessStatus())); - alarmRecordDpDTO.setDeptName(commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid())); + alarmRecordDpDTO.setDeptName(ObjectUtil.isNotEmpty(alarmRecordDpDTO.getDeptid())?commonServer.getDeptNamesByDeptId(alarmRecordDpDTO.getDeptid()):""); }); return alarmRecordDpDTOList; } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index 80dd5e8..3e5553c 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -6,8 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; +import lombok.*; import java.io.Serializable; import java.util.Date; @@ -20,6 +19,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_pan_gas") @@ -44,6 +44,11 @@ @TableField("LEDGER_NUMBER") private String ledgerNumber; + @ApiModelProperty("场站编号") + @TableField("LEDGER_CODE") + private String ledgerCode; + + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java index bf8c36e..3a54704 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/IDataPanGasService.java @@ -3,6 +3,8 @@ import com.casic.missiles.modular.data.entity.DataPanGas; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 云台监测数据表 服务类 @@ -13,4 +15,8 @@ */ public interface IDataPanGasService extends IService { + boolean processAcceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + } 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 e352185..eccca85 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,12 +1,30 @@ package com.casic.missiles.modular.data.service.impl; +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; +import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.modular.alarm.dto.AlarmRuleResponseDTO; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IAlarmRuleService; +import com.casic.missiles.modular.data.dao.DataGasMapper; import com.casic.missiles.modular.data.dao.DataPanGasMapper; +import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.entity.DataPanGas; import com.casic.missiles.modular.data.service.IDataPanGasService; +import com.casic.missiles.modular.device.service.IBusDeviceService; +import com.casic.missiles.util.CommonUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; +import java.util.Map; /** *

@@ -16,31 +34,155 @@ * @author zt * @since 2024-07-16 */ +@Slf4j +@RequiredArgsConstructor @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + + private final DataGasMapper dataGasMapper; + private final IAlarmRecordsService alarmRecordsService; + private final IBusDeviceService busDeviceService; + private final IAlarmRuleService alarmRuleService; + public void process(String dataContent) { String devCode = dataContent.split(",")[0]; String dataValue = dataContent.split(",")[1]; //toDo:加缓存 - String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); //存储数据 - DataPanGas dataPanGas = new DataPanGas(); - dataPanGas.setDeviceCode(devCode); - dataPanGas.setConcentration(dataValue); - dataPanGas.setLogtime(new Date()); - dataPanGas.setLedgerNumber(stationCode); - this.save(dataPanGas); +// DataPanGas dataPanGas = new DataPanGas(); +// dataPanGas.setDeviceCode(devCode); +// dataPanGas.setConcentration(dataValue); +// dataPanGas.setLogtime(new Date()); +// dataPanGas.setLedgerNumber(stationCode); +// this.save(dataPanGas); //判断报警 //websocket 推送 - - System.out.println("22222222---->"+dataContent); + System.out.println("22222222---->" + dataContent); } + + @Override + public boolean processAcceptGasData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + String devCode = ""; + for (int i = 0; i < jsonArray.size(); i++) { + try { + devCode = ((JSONObject) jsonArray.get(i)).getString("deviceCode"); + if (ObjectUtil.isEmpty(devCode)) continue; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String gas = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String attributeType = ((JSONObject) jsonArray.get(i)).getString("attributeType"); + //暂只存浓度 + if ("2".equals(attributeType)) continue; + String dataTime = ((JSONObject) jsonArray.get(i)).getString("dataTime"); + gas = String.format("%.2f", Double.valueOf(gas)); + //1.存数据 + save(DataPanGas.builder() + .ledgerCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .ledgerNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .deviceCode(devCode) + .concentration(gas) + .logtime(DateUtil.parseDateTime(dataTime)) + .build());//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) continue; + + //3.清除设备告警 + alarmRecordsService.cancelDeviceAlarm(devCode); + //4.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; + String bfcf = busDeviceService.getBfcf(devCode); + if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { + //获取报警规则 + List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); + for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { + if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && + Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { + alarmFlag = true; + //写入报警 + //1、判断报警是否已存在 + if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { + dataTime = dataTime.replaceAll("-", ""); + dataTime = dataTime.replaceAll(":", ""); + dataTime = dataTime.replaceAll("\\s+", ""); + alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); + } + break; + } + } + } + //5.清数据报警 + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } + //6.更新电量及状态 (1:正常,2:报警) + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", "", gas); + //7.更新监测井状态 (1:正常,2:报警) + if (busWellDTOList != null && busWellDTOList.size() > 0) { + alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + return true; + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + JSONObject jsonObject = new JSONObject(dataParams); + String devCode = jsonObject.getString("deviceCode"); + try { + if (ObjectUtil.isEmpty(devCode)) return false; + List busWellDTOList = this.dataGasMapper.getListByDevCode(devCode); + String uploadUrl = jsonObject.getString("uploadUrl"); + String collDate = jsonObject.getString("collDate"); + String eventType = jsonObject.getString("eventType"); + log.info("uploadUrl--->"+uploadUrl+",collDate---->"+collDate+",eventType---->"+eventType); + //1.存报警 + //若没绑定井,则不产生报警 + boolean alarmFlag = false; +// String bfcf = busDeviceService.getBfcf(devCode); +// if (DictEnum.BF_ON.equals(bfcf) && busWellDTOList != null && busWellDTOList.size() > 0) { +// //获取报警规则 +// List alarmRuleResponseDTOList = alarmRuleService.getByDevCode(devCode); +// alarmRuleResponseDTOList.stream().filter(dto->"4".equals()) +// for (AlarmRuleResponseDTO alarmRuleResponseDTO : alarmRuleResponseDTOList) { +// if (CommonUtil.isNumber(alarmRuleResponseDTO.getAlarmThreshold()) && +// Float.valueOf(gas) >= Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold())) { +// alarmFlag = true; +// //写入报警 +// //1、判断报警是否已存在 +// if (!alarmRecordsService.isDataAlarmByCode(devCode, alarmRuleResponseDTO.getAlarmLevelId(), Float.valueOf(gas))) { +// dataTime = dataTime.replaceAll("-", ""); +// dataTime = dataTime.replaceAll(":", ""); +// dataTime = dataTime.replaceAll("\\s+", ""); +// alarmRecordsService.saveAlarms(devCode, gas, dataTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.PANTILT.getName()); +// } +// break; +// } +// } +// } +// +// //7.更新监测井状态 (1:正常,2:报警) +// if (busWellDTOList != null && busWellDTOList.size() > 0) { +// alarmRecordsService.updateWellStatus(busWellDTOList.get(0).getTagNumber(), alarmFlag ? "2" : "1"); +// } + } catch (Exception e) { + e.printStackTrace(); +// log.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + return true; + } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml index dc18b76..7b92b04 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/EqEquipRqMapper.xml @@ -184,7 +184,7 @@ WHERE EQ_LOCNO like 'N%' and - EQ_CATEGORY =3 + EQ_CATEGORY in (1,3) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java new file mode 100644 index 0000000..8756614 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzPlayBackDTO.java @@ -0,0 +1,23 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzPlayBackDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("开始时间") + private String beginDate; + + @ApiModelProperty("结束时间") + private String endDate; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java new file mode 100644 index 0000000..58faa0e --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzXtControlDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzXtControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("设备id") + private String deviceId; + + //移动命令:left right up down left_up left_down right_up right_down GOTO_PRESET + @ApiModelProperty("移动命令") + private String command; + + @ApiModelProperty("速度") + private String speed; + + @ApiModelProperty("启停命令") + private String cameraAction; + + @ApiModelProperty("预置点编号") + private String presetIndex; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 6c7173b..28be73d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -65,7 +65,7 @@ Page pipePage = this.page(page, queryWrapper); List pipeList = pipePage.getRecords(); pipeList.forEach(pipe -> { - pipe.setDeptName(commonServer.getDeptNamesByDeptId(pipe.getDeptid())); + pipe.setDeptName(ObjectUtil.isNotEmpty(pipe.getDeptid())?commonServer.getDeptNamesByDeptId(pipe.getDeptid()):""); }); return pipePage; } @@ -78,7 +78,7 @@ List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setOnState("1".equals(busLedger.getOnState())?"在用":"备用"); // 在用状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 管理单位名称 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 管理单位名称 busLedger.setPressType(abstractDictService.getDictNameByCode("wellType", busLedger.getPressType())); // 位置状态字典值 busLedger.setMonitorState(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 }); @@ -91,7 +91,7 @@ if (null != busLedgerPipeResponseDTO) { busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setDeptName(ObjectUtil.isNotEmpty(busLedgerPipeResponseDTO.getDeptid())?commonServer.getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid()):""); // 管理单位名称 busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 busLedgerPipeResponseDTO.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedgerPipeResponseDTO.getMonitorState())); // 监控状态字典值 diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java index c98ec10..597306c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerServiceImpl.java @@ -55,7 +55,7 @@ busLedger.setOnStateName(abstractDictService.getDictNameByCode("onState", busLedger.getOnState())); // 使用状态字典值 // busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); }); return pageList; } @@ -290,7 +290,8 @@ busLedger.setPropertyPhone(syncTagDTO.getPropertyPhone()); busLedger.setOpenDate(syncTagDTO.getOpenDate()); busLedger.setArea(syncTagDTO.getArea()); - busLedger.setType("1"); + busLedger.setValid("1"); + busLedger.setType("3".equals(syncTagDTO.getType())?"1":"2"); if (busLedgerOld != null && StrUtil.equals(busLedgerOld.getLedgerCode(), busLedger.getLedgerCode()) && StrUtil.equals(busLedgerOld.getLedgerName(), busLedger.getLedgerName()) && StrUtil.equals(busLedgerOld.getTagNumber(), busLedger.getTagNumber()) && StrUtil.equals(busLedgerOld.getLatGaode(), busLedger.getLatGaode()) && StrUtil.equals(busLedgerOld.getLngGaode(), busLedger.getLngGaode()) && StrUtil.equals(busLedgerOld.getPosition(), busLedger.getPosition()) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java index 2571222..96fed06 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusPipelineServiceImpl.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -60,7 +61,7 @@ busPipeline.setPressTypeName(abstractDictService.getDictNameByCode("wellType", busPipeline.getPressType())); - busPipeline.setDeptName(commonServer.getDeptNamesByDeptId(busPipeline.getDeptid())); + busPipeline.setDeptName(ObjectUtil.isNotEmpty(busPipeline.getDeptid())?commonServer.getDeptNamesByDeptId(busPipeline.getDeptid()):""); }); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index fe83cce..06470f7 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -50,7 +51,7 @@ busLedger.setWellTypeName(abstractDictService.getDictNameByCode("wellType", busLedger.getWellType())); // 井类型字典值 busLedger.setLocationStateName(abstractDictService.getDictNameByCode("locationState", busLedger.getLocationState())); // 位置状态字典值 busLedger.setMonitorStateName(abstractDictService.getDictNameByCode("monitorState", busLedger.getMonitorState())); // 监控状态字典值 - busLedger.setDeptName(commonServer.getDeptNamesByDeptId(busLedger.getDeptid())); // 监控状态字典值 + busLedger.setDeptName(ObjectUtil.isNotEmpty(busLedger.getDeptid())?commonServer.getDeptNamesByDeptId(busLedger.getDeptid()):""); // 监控状态字典值 }); return pageList; } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java index d30d1ba..b372b6b 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DeviceTypeEnum.java @@ -18,7 +18,7 @@ H2s("硫化氢检测终端", 14,"data_h2s"), PRESS("压力监测终端", 15,"data_press"), KAD("点型可燃气体探测器", 16,"data_kad"), - PANTILT("激光甲烷云台", 17,"data_pantilt"), + PANTILT("激光甲烷云台", 17,"data_pan_gas"), PRESSURE("压力监测终端", 18,"data_pressure"), GasDector("点型可燃气体探测器", 19,"data_gas_dector"); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java index 1c80520..1d4fd0d 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -1,20 +1,30 @@ package com.casic.missiles.modular.ptz.controller; +import com.alibaba.fastjson.JSON; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.device.dto.PtzPlayBackDTO; +import com.casic.missiles.modular.device.dto.PtzXtControlDTO; import com.casic.missiles.modular.ptz.service.IPtzService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -@Api(tags = "云台控制模块") +import java.util.Map; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +@Api(tags = "云台管理模块") @RequiredArgsConstructor +@Slf4j @RestController @RequestMapping("/ptz") public class PtzController { - + private final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(3, 6, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<>(10)); private final IPtzService iPtzService; @ApiOperation("云台控制") @@ -23,4 +33,53 @@ public ReturnDTO control(@RequestBody PtzControlDTO request) { return ReturnUtil.success(iPtzService.control(request)); } + + @ApiOperation("实时接收第三方数据") + @PostMapping("/acceptGasData") + @ResponseBody + public ReturnDTO acceptGasData(@RequestBody Map dataParams) { + threadPoolExecutor.execute( + () -> { + String receiveData = JSON.toJSONString(dataParams); + log.info(">>>>>>接收场站云台数据<<<<<<:" + receiveData); + iPtzService.acceptGasData(dataParams); + } + ); + return ReturnUtil.success(); + } + + @ApiOperation("实时接收Ai报警数据") + @PostMapping("/acceptAlarmData") + @ResponseBody + public ReturnDTO acceptAlarmData(@RequestBody Map dataParams) { + threadPoolExecutor.execute( + () -> { + String receiveData = JSON.toJSONString(dataParams); + log.info(">>>>>>接收ai报警数据<<<<<<:" + receiveData); + iPtzService.acceptAlarmData(dataParams); + } + ); + return ReturnUtil.success(); + } + + @ApiOperation("获取迅腾云台设备编号") + @PostMapping("/getOneDevice") + @ResponseBody + public ReturnDTO getOneDevice(String deviceCode) { + return ReturnUtil.success(iPtzService.getOneDevice(deviceCode)); + } + + @ApiOperation("设备控制接口") + @PostMapping("/controCearm") + @ResponseBody + public ReturnDTO controCearm(@RequestBody PtzXtControlDTO ptzXtControlDTO) { + return ReturnUtil.success(iPtzService.controCearm(ptzXtControlDTO)); + } + + @ApiOperation("视频回放查询接口") + @PostMapping("/getPlayBackUrl") + @ResponseBody + public ReturnDTO getPlayBackUrl(@RequestBody PtzPlayBackDTO ptzPlayBackDTO) { + return ReturnUtil.success(iPtzService.getPlayBackUrl(ptzPlayBackDTO)); + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java index 30cc50c..5d625af 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java @@ -1,9 +1,23 @@ package com.casic.missiles.modular.ptz.service; import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.device.dto.PtzPlayBackDTO; +import com.casic.missiles.modular.device.dto.PtzXtControlDTO; + +import java.util.Map; public interface IPtzService { boolean control(PtzControlDTO request); + boolean acceptGasData(Map dataParams); + + boolean acceptAlarmData(Map dataParams); + + boolean controCearm(PtzXtControlDTO ptzXtControlDTO); + + String getPlayBackUrl(PtzPlayBackDTO ptzPlayBackDTO); + + String getOneDevice(String deviceCode); + } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java index d3c6c4d..81ddba0 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java @@ -1,14 +1,80 @@ package com.casic.missiles.modular.ptz.service.impl; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.modular.data.service.IDataPanGasService; import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.device.dto.PtzPlayBackDTO; +import com.casic.missiles.modular.device.dto.PtzXtControlDTO; import com.casic.missiles.modular.netty.DeviceCommon; import com.casic.missiles.modular.ptz.service.IPtzService; +import com.casic.missiles.util.HttpClientUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.util.Map; + +@RequiredArgsConstructor @Service public class PtzServiceImpl implements IPtzService { + + @Value("${casic.brPanGetDevcodeUrl}") + private String brPanGetDevcodeUrl; + @Value("${casic.brPanControlUrl}") + private String brPanControlUrl; + @Value("${casic.brPanVideoUrl}") + private String brPanVideoUrl; + private final IDataPanGasService iDataPanGasService; + @Override public boolean control(PtzControlDTO request) { return DeviceCommon.sendMsg(request.getDevCode(), request.getInstructions()); } + + @Override + public boolean acceptGasData(Map dataParams) { + return iDataPanGasService.processAcceptGasData(dataParams); + } + + @Override + public boolean acceptAlarmData(Map dataParams) { + return iDataPanGasService.acceptAlarmData(dataParams); + } + + @Override + public String getOneDevice(String deviceCode) { + String result = HttpClientUtils.get(brPanGetDevcodeUrl + "/" + deviceCode); + if (ObjectUtil.isNotEmpty(result)) { + JSONObject jsonObject = JSON.parseObject(result); + if ("200".equals(jsonObject.getString("code"))) { + JSONObject dataJson = jsonObject.getJSONObject("data"); + return dataJson.getString("deviceId"); + } + } + return ""; + } + + @Override + public boolean controCearm(PtzXtControlDTO ptzXtControlDTO) { + JSONObject json = (JSONObject) JSONObject.toJSON(ptzXtControlDTO); + String result = HttpClientUtils.post(brPanControlUrl, json.toJSONString()); + //toDo:解析后返回 + return true; + } + + @Override + public String getPlayBackUrl(PtzPlayBackDTO ptzPlayBackDTO) { + JSONObject json = (JSONObject) JSONObject.toJSON(ptzPlayBackDTO); + String result = HttpClientUtils.post(brPanVideoUrl, json.toJSONString()); + if (ObjectUtil.isNotEmpty(result)) { + JSONObject jsonObject = JSON.parseObject(result); + if ("200".equals(jsonObject.getString("code"))) { + JSONObject dataJson = jsonObject.getJSONObject("data"); + return dataJson.getString("url"); + } + } + return ""; + } } diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index ffe4cdf..8e43996 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_platform?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_platform?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 @@ -28,6 +28,9 @@ init: enable: false brAppUrl: http://10.30.7.26:20115/monitorDataReceive/alarmPush + brPanGetDevcodeUrl: http://172.17.240.116:9092/ranshitong/device/getOneDevice + brPanControlUrl: http://172.17.240.116:9092/HkController/controCearm + brPanVideoUrl: http://172.17.240.116:9092/HkController/getPlayBackUrl smartcity: config: