diff --git a/web-app/src/main/java/com/zcloud/personnel/positioning/command/query/AlarmRecordQueryExe.java b/web-app/src/main/java/com/zcloud/personnel/positioning/command/query/AlarmRecordQueryExe.java index b6f0081..5357da4 100644 --- a/web-app/src/main/java/com/zcloud/personnel/positioning/command/query/AlarmRecordQueryExe.java +++ b/web-app/src/main/java/com/zcloud/personnel/positioning/command/query/AlarmRecordQueryExe.java @@ -42,6 +42,22 @@ import java.util.stream.Collectors; @Component @AllArgsConstructor public class AlarmRecordQueryExe { + /** FindS支持的完整告警类型,下拉选项不依赖当前企业是否已经产生对应告警。 */ + private static final List ALARM_TYPE_OPTIONS = Collections.unmodifiableList(java.util.Arrays.asList( + new OptionCO("闯入报警", "CROSS_IN"), + new OptionCO("离开报警", "CROSS_OUT"), + new OptionCO("滞留报警", "RETENTION"), + new OptionCO("聚集报警", "CLUSTER"), + new OptionCO("超员报警", "CROWDED"), + new OptionCO("缺员报警", "LACKED"), + new OptionCO("静止报警", "STATIC"), + new OptionCO("停留报警", "STAY"), + new OptionCO("超速报警", "OVER_SPEED"), + new OptionCO("碰撞报警", "CRASH"), + new OptionCO("低电量报警", "LOW_BATTERY"), + new OptionCO("SOS报警", "SOS") + )); + private final AlarmRecordRepository alarmRecordRepository; private final AlarmRecordTargetRepository alarmRecordTargetRepository; private final AlarmRecordCoConvertor alarmRecordCoConvertor; @@ -128,19 +144,7 @@ public class AlarmRecordQueryExe { } public List listAlarmTypeOptions() { - SSOUser user = AuthContext.getCurrentUser(); - Long corpinfoId = user == null ? null : user.getCompanyId(); - // 只返回当前企业告警记录中实际出现过的编码,名称使用FindS确定的编码映射。 - List rows = alarmRecordRepository.listBiAlarmType(corpinfoId); - if (rows == null || rows.isEmpty()) { - return Collections.emptyList(); - } - return rows.stream() - .filter(Objects::nonNull) - .filter(row -> StringUtils.hasText(row.getAlarmCode())) - .map(row -> new OptionCO(alarmNameOf(row.getAlarmCode()), - row.getAlarmCode())) - .collect(Collectors.toList()); + return ALARM_TYPE_OPTIONS; } private OptionCO mapCompanyOption(CompanyOptionDO dataObject) { @@ -157,7 +161,10 @@ public class AlarmRecordQueryExe { row.setTargetList(targetList); row.setPersonnelName(defaultIfBlank(row.getFirstStaffNameSnapshot(), firstTargetName(targetList))); row.setCompanyName(row.getCorpinfoName()); - row.setAlarmTypeName(defaultIfBlank(row.getAlarmName(), alarmNameOf(row.getAlarmCode()))); + // 返回前统一以FindS告警编码为准,避免数据库中的围栏名称被当作告警名称展示。 + String alarmName = defaultIfBlank(alarmLabelOf(row.getAlarmCode()), row.getAlarmName()); + row.setAlarmName(alarmName); + row.setAlarmTypeName(alarmName); } } @@ -273,6 +280,11 @@ public class AlarmRecordQueryExe { } private String alarmNameOf(String alarmCode) { + String alarmLabel = alarmLabelOf(alarmCode); + return StringUtils.hasText(alarmLabel) ? alarmLabel : alarmCode; + } + + private String alarmLabelOf(String alarmCode) { if ("CROSS_IN".equals(alarmCode)) { return "闯入报警"; } @@ -309,7 +321,7 @@ public class AlarmRecordQueryExe { if ("SOS".equals(alarmCode)) { return "SOS报警"; } - return alarmCode; + return null; } private String alarmTypeNameOf(String alarmCode, String alarmName) { diff --git a/web-infrastructure/src/main/resources/mapper/AlarmRuleMapper.xml b/web-infrastructure/src/main/resources/mapper/AlarmRuleMapper.xml index 744dc34..0f15adb 100644 --- a/web-infrastructure/src/main/resources/mapper/AlarmRuleMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/AlarmRuleMapper.xml @@ -96,36 +96,61 @@