|
@@ -1,5 +1,6 @@
|
|
|
package com.persagy.apm.alarmservice.project.alarmrule.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.persagy.apm.alarmservice.common.util.DataUtils;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
|
|
|
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.GetGroupAlarmRuleDTO;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.model.dto.QueryGroupAlarmRuleDTO;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
|
|
|
import com.persagy.apm.alarmservice.group.management.model.equip.dto.QueryEquipDTO;
|
|
@@ -16,6 +18,8 @@ import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipListIte
|
|
|
import com.persagy.apm.alarmservice.group.management.service.impl.GroupManagementServiceImpl;
|
|
|
import com.persagy.apm.alarmservice.project.alarmcondition.model.ConvertAlarmConditionTool;
|
|
|
import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
|
|
|
+import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.QueryAlarmConditionDTO;
|
|
|
+import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.UpdateAlarmConditionDTO;
|
|
|
import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
|
|
|
import com.persagy.apm.alarmservice.project.alarmrule.dao.ProjectAlarmRuleMapper;
|
|
|
import com.persagy.apm.alarmservice.project.alarmrule.model.ConvertProjectAlarmRuleTool;
|
|
@@ -34,6 +38,7 @@ import com.persagy.apm.common.constant.enums.ValidEnum;
|
|
|
import com.persagy.apm.common.context.AppContext;
|
|
|
import com.persagy.apm.common.context.poems.PoemsContext;
|
|
|
import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
|
|
|
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.AlarmEffectTime;
|
|
|
import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.*;
|
|
|
import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem;
|
|
|
import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
|
|
@@ -88,7 +93,6 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public String createProjectAlarmRule(AddProjectAlarmRuleDTO addProjectAlarmRuleDTO) throws Exception {
|
|
|
ProjectAlarmRule projectAlarmRule = ConvertProjectAlarmRuleTool.INSTANCE.convertAddDto2Entity(addProjectAlarmRuleDTO);
|
|
|
-// List<ProjectAlarmRuleObjRelListItemVO> equipList = ConvertProjectAlarmRuleObjRelTool.INSTANCE.convert2List(addProjectAlarmRuleDTO.getAddEquipList());
|
|
|
AddAlarmConditionDTO alarmConditionDTO = addProjectAlarmRuleDTO.getAlarmCondition();
|
|
|
ConvertAlarmConditionTool.INSTANCE.convertAddDto2Entity(alarmConditionDTO);
|
|
|
//存储报警规则
|
|
@@ -101,7 +105,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
save(projectAlarmRule);
|
|
|
|
|
|
List<ProjectAlarmRuleObjRel> addEquipList = addProjectAlarmRuleDTO.getAddEquipList();
|
|
|
- addEquipList.forEach(addEquip->{
|
|
|
+ addEquipList.forEach(addEquip -> {
|
|
|
addEquip.setProjectAlarmRuleId(projectAlarmRule.getId());
|
|
|
});
|
|
|
//保存报警对象
|
|
@@ -111,21 +115,41 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
|
|
|
for (ProjectAlarmRuleObjRel ProjectAlarmRuleObjRel : addEquipList) {
|
|
|
AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
|
|
|
- addAlarmConfigDTO.setObjId(ProjectAlarmRuleObjRel.getObjId());
|
|
|
+ String equipId = ProjectAlarmRuleObjRel.getObjId();
|
|
|
+ addAlarmConfigDTO.setObjId(equipId);
|
|
|
addAlarmConfigDTO.setItemCode(addProjectAlarmRuleDTO.getAlarmItemCode());
|
|
|
addAlarmConfigDTO.setClassCode(addProjectAlarmRuleDTO.getClassCode());
|
|
|
addAlarmConfigDTO.setLevel(alarmConditionDTO.getAlarmLevel());
|
|
|
- AlarmCondition condition = new AlarmCondition();
|
|
|
- condition.setTrigger(alarmConditionDTO.getBackend());
|
|
|
- List<String> infoCodeList = alarmConditionDTO.getInfoCodes();
|
|
|
- condition.setInfoCode(infoCodeList);
|
|
|
- condition.setTriggerUphold(alarmConditionDTO.getTriggerUphold());
|
|
|
- Map<String, Object> stringMap = alarmConditionService.frontend2Backend(alarmConditionDTO.getFrontend());
|
|
|
- condition.setRules((List<String>) stringMap.get("displayFormula"));
|
|
|
- addAlarmConfigDTO.setCondition(condition);
|
|
|
+ addAlarmConfigDTO.setCategory("Eqdx");
|
|
|
+ addAlarmConfigDTO.setOpen(1);
|
|
|
+ AlarmCondition equipCondition = new AlarmCondition();
|
|
|
+ List<String> infoCodeList = (List<String>) alarmConditionMap.get("infoCode");
|
|
|
+ List<String> infoCodeNew = new ArrayList<>();
|
|
|
+ for (String infoCode : infoCodeList) {
|
|
|
+ String replacement = equipId + "_" + infoCode;
|
|
|
+ infoCodeNew.add(infoCode.replaceAll(infoCode, replacement));
|
|
|
+ }
|
|
|
+ equipCondition.setInfoCode(infoCodeNew);
|
|
|
+ String backend = (String) alarmConditionMap.get("backend");
|
|
|
+ for (String infoCode : infoCodeList) {
|
|
|
+ String replacement = equipId + "_" + infoCode;
|
|
|
+ backend = backend.replaceAll(infoCode, replacement);
|
|
|
+ }
|
|
|
+ equipCondition.setEnd("!" + backend);
|
|
|
+ equipCondition.setEndUphold(0);
|
|
|
+ equipCondition.setTrigger(backend);
|
|
|
+ equipCondition.setTriggerUphold(alarmConditionDTO.getTriggerUphold() * 60);
|
|
|
+ equipCondition.setRules((List<String>) alarmConditionMap.get("displayFormula"));
|
|
|
+ JSONArray configs = JSONArray.parseArray(JSON.toJSONString(alarmConditionDTO.getFrontend()));
|
|
|
+ equipCondition.setConfigs(configs);
|
|
|
+ AlarmEffectTime effectTime = new AlarmEffectTime();
|
|
|
+ effectTime.setType("always");
|
|
|
+ equipCondition.setEffectTime(effectTime);
|
|
|
+ addAlarmConfigDTO.setCondition(equipCondition);
|
|
|
alarmConfigs.add(addAlarmConfigDTO);
|
|
|
}
|
|
|
batchAddAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
|
|
|
+ batchAddAlarmConfigDTO.setProjectId(addProjectAlarmRuleDTO.getProjectId());
|
|
|
alarmConfigService.batchCreate(batchAddAlarmConfigDTO);
|
|
|
return projectAlarmRule.getId();
|
|
|
}
|
|
@@ -171,70 +195,100 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
projectAlarmRule = ConvertProjectAlarmRuleTool.INSTANCE.convertUpdateDto2Entity(projectAlarmRule, updateProjectAlarmRuleDTO);
|
|
|
projectAlarmRule.setModifier(AppContext.getContext().getAccountId());
|
|
|
AddAlarmConditionDTO alarmCondition = updateProjectAlarmRuleDTO.getAlarmCondition();
|
|
|
- if (alarmCondition != null) {
|
|
|
- //查询已有报警
|
|
|
- ProjectAlarmRule projectRule = getById(updateProjectAlarmRuleDTO.getId());
|
|
|
- int belongOld = projectRule.getBelong();
|
|
|
- int belongNew = updateProjectAlarmRuleDTO.getBelong();
|
|
|
- //删除对应项目、报警类型、报警对象的关联
|
|
|
- projectAlarmRuleObjRelService.deleteRelation(updateProjectAlarmRuleDTO.getProjectId());
|
|
|
- if (belongOld > belongNew) {//集团规则->项目自定义规则
|
|
|
- //新增自定义的规则
|
|
|
- Map<String, Object> map = alarmConditionService.createAlarmCondition(alarmCondition);
|
|
|
- projectAlarmRule.setAlarmConditionId((String) map.get("id"));
|
|
|
- } else if (belongOld < belongNew) {//项目自定义规则->集团规则
|
|
|
- String conditionId = getConditionId(updateProjectAlarmRuleDTO.getAlarmItemCode());
|
|
|
- projectAlarmRule.setAlarmConditionId(conditionId);
|
|
|
- } else if (belongOld == 0 && belongNew == 0) {//项目自定义规则->项目自定义规则
|
|
|
- //删除自定义规则,新增自定义的规则
|
|
|
- alarmConditionService.deleteAlarmCondition(updateProjectAlarmRuleDTO.getAlarmConditionId());
|
|
|
- Map<String, Object> map = alarmConditionService.createAlarmCondition(alarmCondition);
|
|
|
- projectAlarmRule.setAlarmConditionId((String) map.get("id"));
|
|
|
- }
|
|
|
- //新增关联关系
|
|
|
- List<UpdateAlarmItemDTO> addRelationList = updateProjectAlarmRuleDTO.getAddRelationList();
|
|
|
- String projectId = updateProjectAlarmRuleDTO.getProjectId();
|
|
|
- String id = updateProjectAlarmRuleDTO.getId();
|
|
|
- List<AddProjectAlarmRuleObjRelDTO> addRelations = convert2AddProjectAlarmRuleObjRelDTO(addRelationList,id,projectId);
|
|
|
- projectAlarmRuleObjRelService.createBatchRelation(addRelations);
|
|
|
-
|
|
|
- //同步更新设备报警条件 begin
|
|
|
-// BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
|
|
|
-// List<UpdateAlarmConfigDTO> updateAlarmConfigDTOs = new ArrayList();
|
|
|
-// String condition = updateProjectAlarmRuleDTO.getCondition();
|
|
|
-// String classCode = updateProjectAlarmRuleDTO.getClassCode();
|
|
|
-// QueryEquipDTO queryEquipDTO = new QueryEquipDTO();
|
|
|
-// queryEquipDTO.setProjectId(projectId);
|
|
|
-// queryEquipDTO.setClassCode(classCode);
|
|
|
-// queryEquipDTO.setCondition(condition);
|
|
|
-// List<EquipItem> records = groupManagementService.getEquipList(queryEquipDTO);
|
|
|
-// Map<String, Object> stringMap = alarmConditionService.frontend2Backend(alarmCondition.getFrontend());
|
|
|
-// for (EquipItem record : records) {
|
|
|
-// AlarmCondition alarmCondit = new AlarmCondition();
|
|
|
-// alarmCondit.setTrigger(alarmCondition.getBackend());
|
|
|
-// List<String> infoCodeList = alarmCondition.getInfoCodes();
|
|
|
-// alarmCondit.setInfoCode(infoCodeList);
|
|
|
-// alarmCondit.setTriggerUphold(alarmCondition.getTriggerUphold());
|
|
|
-// alarmCondit.setRules((List<String>) stringMap.get("displayFormula"));
|
|
|
-// UpdateAlarmConfigDTO updateAlarmConfigDTO = new UpdateAlarmConfigDTO();
|
|
|
-// updateAlarmConfigDTO.setCondition(alarmCondit);
|
|
|
-// updateAlarmConfigDTO.setId(record.getId());
|
|
|
-// updateAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
|
|
|
-// updateAlarmConfigDTOs.add(updateAlarmConfigDTO);
|
|
|
-// }
|
|
|
-// batchUpdateAlarmConfigDTO.setAlarmConfigs(updateAlarmConfigDTOs);
|
|
|
-// alarmConfigService.batchUpdate(batchUpdateAlarmConfigDTO);
|
|
|
- //同步更新设备报警条件 end
|
|
|
+ Map<String, Object> conditionMap = alarmConditionService.swtichAlarmCondition(alarmCondition);
|
|
|
+ //查询已有项目报警
|
|
|
+ ProjectAlarmRule projectRule = getById(updateProjectAlarmRuleDTO.getId());
|
|
|
+ int belongOld = projectRule.getBelong();
|
|
|
+ int belongNew = updateProjectAlarmRuleDTO.getBelong();
|
|
|
+ if (belongOld > belongNew) {//集团规则->项目自定义规则
|
|
|
+ //新增规则
|
|
|
+ com.persagy.apm.alarmservice.project.alarmcondition.model.AlarmCondition condition =
|
|
|
+ (com.persagy.apm.alarmservice.project.alarmcondition.model.AlarmCondition) conditionMap.get("alarmCondition");
|
|
|
+ String uuid = DataUtils.getUUID();
|
|
|
+ condition.setId(uuid);
|
|
|
+ alarmConditionService.saveCondition(condition);
|
|
|
+ //将规则ID传给项目报警
|
|
|
+ projectAlarmRule.setAlarmConditionId(uuid);
|
|
|
+ } else if (belongOld < belongNew) {//项目自定义规则->集团规则
|
|
|
+ //删除自定义规则
|
|
|
+ ProjectAlarmRule projectAlarm = getById(updateProjectAlarmRuleDTO.getId());
|
|
|
+ alarmConditionService.deleteAlarmCondition(projectAlarm.getAlarmConditionId());
|
|
|
+ //查询集团规则,将集团规则ID传给项目报警
|
|
|
+ GetGroupAlarmRuleDTO getGroupAlarmRuleDTO = new GetGroupAlarmRuleDTO();
|
|
|
+ getGroupAlarmRuleDTO.setGroupId(updateProjectAlarmRuleDTO.getGroupId());
|
|
|
+ getGroupAlarmRuleDTO.setAlarmItemCode(updateProjectAlarmRuleDTO.getAlarmItemCode());
|
|
|
+ GroupAlarmRule groupAlarmRule = groupAlarmRuleService.getGroupAlarmRule(getGroupAlarmRuleDTO);
|
|
|
+ projectAlarmRule.setAlarmConditionId(groupAlarmRule.getId());
|
|
|
+ } else if (belongOld == 0 && belongNew == 0) {//项目自定义规则->项目自定义规则
|
|
|
+ //修改自定义规则
|
|
|
+ UpdateAlarmConditionDTO updateAlarmConditionDTO = new UpdateAlarmConditionDTO();
|
|
|
+ updateAlarmConditionDTO.setFrontend(alarmCondition.getFrontend());
|
|
|
+ updateAlarmConditionDTO.setId(updateProjectAlarmRuleDTO.getAlarmConditionId());
|
|
|
+ updateAlarmConditionDTO.setTriggerUphold(alarmCondition.getTriggerUphold());
|
|
|
+ updateAlarmConditionDTO.setAlarmLevel(alarmCondition.getAlarmLevel());
|
|
|
+ alarmConditionService.updateAlarmCondition(updateAlarmConditionDTO);
|
|
|
}
|
|
|
//更新项目报警
|
|
|
projectAlarmRule.setModifiedTime(new Date());
|
|
|
projectAlarmRule.setModifier(PoemsContext.getContext().getUserId());
|
|
|
updateById(projectAlarmRule);
|
|
|
-
|
|
|
-
|
|
|
+ //删除报警对象关联关系
|
|
|
+ projectAlarmRuleObjRelService.deleteRelation(updateProjectAlarmRuleDTO.getId());
|
|
|
+ //新增关联关系
|
|
|
+ List<UpdateAlarmItemDTO> addRelationList = updateProjectAlarmRuleDTO.getAddRelationList();
|
|
|
+ String projectId = updateProjectAlarmRuleDTO.getProjectId();
|
|
|
+ String id = updateProjectAlarmRuleDTO.getId();
|
|
|
+ List<AddProjectAlarmRuleObjRelDTO> addRelations = convert2AddProjectAlarmRuleObjRelDTO(addRelationList, id, projectId);
|
|
|
+ projectAlarmRuleObjRelService.createBatchRelation(addRelations);
|
|
|
+ String condition = updateProjectAlarmRuleDTO.getCondition();
|
|
|
+ String classCode = updateProjectAlarmRuleDTO.getClassCode();
|
|
|
+ String alarmItemCode = updateProjectAlarmRuleDTO.getAlarmItemCode();
|
|
|
+ //删除中台报警条件
|
|
|
+ groupAlarmRuleService.deleteEquipCondition(condition, classCode, alarmItemCode);
|
|
|
+ //新增中台报警条件
|
|
|
+ BatchAddAlarmConfigDTO batchAddAlarmConfigDTO = new BatchAddAlarmConfigDTO();
|
|
|
+ List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
|
|
|
+ for (AddProjectAlarmRuleObjRelDTO equipRel : addRelations) {
|
|
|
+ AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
|
|
|
+ String equipId = equipRel.getObjId();
|
|
|
+ addAlarmConfigDTO.setObjId(equipId);
|
|
|
+ addAlarmConfigDTO.setItemCode(alarmItemCode);
|
|
|
+ addAlarmConfigDTO.setClassCode(classCode);
|
|
|
+ addAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
|
|
|
+ addAlarmConfigDTO.setCategory("Eqdx");
|
|
|
+ addAlarmConfigDTO.setOpen(1);
|
|
|
+ AlarmCondition equipCondition = new AlarmCondition();
|
|
|
+ List<String> infoCodeList = (List<String>) conditionMap.get("infoCode");
|
|
|
+ List<String> infoCodeNew = new ArrayList<>();
|
|
|
+ for (String infoCode : infoCodeList) {
|
|
|
+ String replacement = equipId + "_" + infoCode;
|
|
|
+ infoCodeNew.add(infoCode.replaceAll(infoCode, replacement));
|
|
|
+ }
|
|
|
+ equipCondition.setInfoCode(infoCodeNew);
|
|
|
+ String backend = (String) conditionMap.get("backend");
|
|
|
+ for (String infoCode : infoCodeList) {
|
|
|
+ String replacement = equipId + "_" + infoCode;
|
|
|
+ backend = backend.replaceAll(infoCode, replacement);
|
|
|
+ }
|
|
|
+ equipCondition.setEnd("!" + backend);
|
|
|
+ equipCondition.setEndUphold(0);
|
|
|
+ equipCondition.setTrigger(backend);
|
|
|
+ equipCondition.setTriggerUphold(alarmCondition.getTriggerUphold() * 60);
|
|
|
+ equipCondition.setRules((List<String>) conditionMap.get("displayFormula"));
|
|
|
+ JSONArray configs = JSONArray.parseArray(JSON.toJSONString(alarmCondition.getFrontend()));
|
|
|
+ equipCondition.setConfigs(configs);
|
|
|
+ AlarmEffectTime effectTime = new AlarmEffectTime();
|
|
|
+ effectTime.setType("always");
|
|
|
+ equipCondition.setEffectTime(effectTime);
|
|
|
+ addAlarmConfigDTO.setCondition(equipCondition);
|
|
|
+ alarmConfigs.add(addAlarmConfigDTO);
|
|
|
+ }
|
|
|
+ batchAddAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
|
|
|
+ batchAddAlarmConfigDTO.setProjectId(projectId);
|
|
|
+ alarmConfigService.batchCreate(batchAddAlarmConfigDTO);
|
|
|
}
|
|
|
|
|
|
- private List<AddProjectAlarmRuleObjRelDTO> convert2AddProjectAlarmRuleObjRelDTO(List<UpdateAlarmItemDTO> addRelationList,String id,String projectId) {
|
|
|
+ private List<AddProjectAlarmRuleObjRelDTO> convert2AddProjectAlarmRuleObjRelDTO(List<UpdateAlarmItemDTO> addRelationList, String id, String projectId) {
|
|
|
List<AddProjectAlarmRuleObjRelDTO> list = new ArrayList<>();
|
|
|
for (UpdateAlarmItemDTO updateAlarmItemDTO : addRelationList) {
|
|
|
AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO = new AddProjectAlarmRuleObjRelDTO();
|
|
@@ -298,7 +352,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
alarmConditionService.deleteAlarmCondition(projectAlarmRule.getAlarmConditionId());
|
|
|
}
|
|
|
//删除项目报警规则与监测对象的关联
|
|
|
- projectAlarmRuleObjRelService.deleteRelation(projectAlarmRule.getProjectId());
|
|
|
+ projectAlarmRuleObjRelService.deleteRelation(projectAlarmRule.getId());
|
|
|
//删除设备报警条件 begin
|
|
|
BatchDeleteAlarmConfigDTO batchDeleteAlarmConfigDTO = new BatchDeleteAlarmConfigDTO();
|
|
|
List<DeleteAlarmConfigDTO> alarmConfigs = new ArrayList<>();
|