|
@@ -12,6 +12,7 @@ import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleServi
|
|
|
import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipItem;
|
|
|
import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipListItem;
|
|
|
import com.persagy.apm.alarmservice.group.management.service.impl.GroupManagementServiceImpl;
|
|
|
+import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
|
|
|
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;
|
|
@@ -27,10 +28,17 @@ import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlar
|
|
|
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.model.dto.AlarmCondition;
|
|
|
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.AddAlarmConfigDTO;
|
|
|
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.BatchAddAlarmConfigDTO;
|
|
|
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.BatchUpdateAlarmConfigDTO;
|
|
|
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.UpdateAlarmConfigDTO;
|
|
|
+import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
|
|
|
import org.apache.commons.io.IOUtils;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
@@ -61,6 +69,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
private IGroupAlarmRuleService groupAlarmRuleService;
|
|
|
@Autowired
|
|
|
private GroupManagementServiceImpl groupManagementService;
|
|
|
+ @Autowired
|
|
|
+ private AlarmConfigServiceImpl alarmConfigService;
|
|
|
|
|
|
/**
|
|
|
* 创建项目报警规则
|
|
@@ -70,8 +80,10 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
* @version V1.0 2021-09-08 22:46:16
|
|
|
*/
|
|
|
@Override
|
|
|
- public String createProjectAlarmRule(AddProjectAlarmRuleDTO addProjectAlarmRuleDTO) {
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String createProjectAlarmRule(AddProjectAlarmRuleDTO addProjectAlarmRuleDTO) throws Exception {
|
|
|
ProjectAlarmRule projectAlarmRule = ConvertProjectAlarmRuleTool.INSTANCE.convertAddDto2Entity(addProjectAlarmRuleDTO);
|
|
|
+ AddAlarmConditionDTO addAlarmConditionDTO = addProjectAlarmRuleDTO.getAlarmCondition();
|
|
|
if (addProjectAlarmRuleDTO.getBelong() == INTEGER_ONE) {
|
|
|
//查询对应报警类型的集团规则,将ID添加到项目规则表
|
|
|
QueryGroupAlarmRuleDTO queryAlarmConditionDTO = new QueryGroupAlarmRuleDTO();
|
|
@@ -79,9 +91,9 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
List<GroupAlarmRule> groupAlarmRuleList = groupAlarmRuleService.queryGroupAlarmRuleList(queryAlarmConditionDTO);
|
|
|
String conditionId = groupAlarmRuleList.get(0).getAlarmConditionId();
|
|
|
projectAlarmRule.setAlarmConditionId(conditionId);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
//新增自定义的规则
|
|
|
- Map<String, Object> map = alarmConditionService.createAlarmCondition(addProjectAlarmRuleDTO.getAlarmCondition());
|
|
|
+ Map<String, Object> map = alarmConditionService.createAlarmCondition(addAlarmConditionDTO);
|
|
|
projectAlarmRule.setAlarmConditionId((String) map.get("id"));
|
|
|
}
|
|
|
//新增关联关系
|
|
@@ -90,6 +102,51 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
projectAlarmRule.setCreationTime(new Date());
|
|
|
setDefaultValue(projectAlarmRule);
|
|
|
save(projectAlarmRule);
|
|
|
+// //同步创建设备报警条件
|
|
|
+// BatchAddAlarmConfigDTO batchAddAlarmConfigDTO = new BatchAddAlarmConfigDTO();
|
|
|
+// List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
|
|
|
+// for (AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO : addProjectAlarmRuleDTO.getAddRelationList()) {
|
|
|
+// AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
|
|
|
+// addAlarmConfigDTO.setObjId(addProjectAlarmRuleObjRelDTO.getEquipId());
|
|
|
+// addAlarmConfigDTO.setItemCode(addProjectAlarmRuleDTO.getAlarmItemCode());
|
|
|
+// addAlarmConfigDTO.setClassCode(addProjectAlarmRuleDTO.getClassCode());
|
|
|
+// addAlarmConfigDTO.setLevel(addAlarmConditionDTO.getAlarmLevel());
|
|
|
+// AlarmCondition condition = new AlarmCondition();
|
|
|
+// condition.setTrigger(addAlarmConditionDTO.getBackend());
|
|
|
+// List<String> infoCodeList = addAlarmConditionDTO.getInfoCodes();
|
|
|
+// condition.setInfoCode(infoCodeList);
|
|
|
+// condition.setTriggerUphold(addAlarmConditionDTO.getTriggerUphold());
|
|
|
+// Map<String, Object> stringMap = alarmConditionService.frontend2Backend(addAlarmConditionDTO.getFrontend());
|
|
|
+// condition.setRules((List<String>) stringMap.get("displayFormula"));
|
|
|
+// addAlarmConfigDTO.setCondition(condition);
|
|
|
+// alarmConfigs.add(addAlarmConfigDTO);
|
|
|
+// }
|
|
|
+// batchAddAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
|
|
|
+// alarmConfigService.batchCreate(batchAddAlarmConfigDTO);
|
|
|
+
|
|
|
+ //同步更新设备报警条件 begin
|
|
|
+// BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
|
|
|
+// List<UpdateAlarmConfigDTO> updateAlarmConfigDTOs = new ArrayList();
|
|
|
+// String condition = addProjectAlarmRuleDTO.getCondition();
|
|
|
+// String classCode = addProjectAlarmRuleDTO.getClassCode();
|
|
|
+// List<GroupManagementVo> records = groupManagementService.getEquipList(condition, classCode);
|
|
|
+// Map<String, Object> stringMap = alarmConditionService.frontend2Backend(addAlarmConditionDTO.getFrontend());
|
|
|
+// for (GroupManagementVo 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
|
|
|
return projectAlarmRule.getId();
|
|
|
}
|
|
|
|
|
@@ -131,38 +188,68 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
* @version V1.0 2021-09-08 22:46:16
|
|
|
*/
|
|
|
@Override
|
|
|
- public void updateProjectAlarmRule(UpdateProjectAlarmRuleDTO updateProjectAlarmRuleDTO) {
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void updateProjectAlarmRule(UpdateProjectAlarmRuleDTO updateProjectAlarmRuleDTO) throws Exception {
|
|
|
ProjectAlarmRule projectAlarmRule = getById(updateProjectAlarmRuleDTO.getId());
|
|
|
projectAlarmRule = ConvertProjectAlarmRuleTool.INSTANCE.convertUpdateDto2Entity(projectAlarmRule, updateProjectAlarmRuleDTO);
|
|
|
projectAlarmRule.setModifier(AppContext.getContext().getAccountId());
|
|
|
- //查询已有报警
|
|
|
- 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(updateProjectAlarmRuleDTO.getAlarmCondition());
|
|
|
- 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(updateProjectAlarmRuleDTO.getAlarmCondition());
|
|
|
- projectAlarmRule.setAlarmConditionId((String) map.get("id"));
|
|
|
+ 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"));
|
|
|
+ }
|
|
|
+ //新增关联关系
|
|
|
+ projectAlarmRuleObjRelService.createBatchRelation(updateProjectAlarmRuleDTO.getAddRelationList());
|
|
|
+
|
|
|
+ //同步更新设备报警条件 begin
|
|
|
+ BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
|
|
|
+ List<UpdateAlarmConfigDTO> updateAlarmConfigDTOs = new ArrayList();
|
|
|
+ String condition = updateProjectAlarmRuleDTO.getCondition();
|
|
|
+ String classCode = updateProjectAlarmRuleDTO.getClassCode();
|
|
|
+ List<EquipItem> records = groupManagementService.getEquipList(condition, classCode);
|
|
|
+ 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
|
|
|
}
|
|
|
- //新增关联关系
|
|
|
- projectAlarmRuleObjRelService.createBatchRelation(updateProjectAlarmRuleDTO.getAddRelationList());
|
|
|
//更新项目报警
|
|
|
projectAlarmRule.setModifiedTime(new Date());
|
|
|
projectAlarmRule.setModifier(PoemsContext.getContext().getUserId());
|
|
|
updateById(projectAlarmRule);
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- public String getConditionId(String alarmItemCode){
|
|
|
+ public String getConditionId(String alarmItemCode) {
|
|
|
//查询对应报警类型的集团规则,将ID添加到项目规则表
|
|
|
QueryGroupAlarmRuleDTO queryAlarmConditionDTO = new QueryGroupAlarmRuleDTO();
|
|
|
queryAlarmConditionDTO.setAlarmItemCode(alarmItemCode);
|
|
@@ -170,6 +257,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
String conditionId = groupAlarmRuleList.get(0).getAlarmConditionId();
|
|
|
return conditionId;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 校验项目报警规则是否可删除
|
|
|
*
|
|
@@ -200,6 +288,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
* @version V1.0 2021-09-08 22:46:16
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void deleteProjectAlarmRule(String id) {
|
|
|
// 校验是否可删除
|
|
|
ProjectAlarmRule projectAlarmRule = checkDeletable(id);
|
|
@@ -292,8 +381,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
}
|
|
|
|
|
|
// todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleDTO.getAlarmItemCode())) {
|
|
|
- queryWrapper.eq(ProjectAlarmRule.PROP_ALARM_ITEM_CODE, pageQueryProjectAlarmRuleDTO.getAlarmItemCode());
|
|
|
+ if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleDTO.getAlarmItemName())) {
|
|
|
+ queryWrapper.like(ProjectAlarmRule.PROP_ALARM_ITEM_NAME, pageQueryProjectAlarmRuleDTO.getAlarmItemName());
|
|
|
}
|
|
|
|
|
|
// todo 需判断使用like还是eq
|
|
@@ -317,17 +406,19 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
|
|
|
public List<AddProjectAlarmRuleObjRelDTO> addProjectAlarmRules(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
|
|
|
String condition = addGroupAlarmRuleDTO.getCondition();
|
|
|
String classCode = addGroupAlarmRuleDTO.getClassCode();
|
|
|
- List<EquipItem> records = groupManagementService.getEquipList(condition,classCode);
|
|
|
+ List<EquipItem> records = groupManagementService.getEquipList(condition, classCode);
|
|
|
//查询所有项目
|
|
|
List<ProjectVO> projects = this.getProject();
|
|
|
//遍历项目,组好对象进行插入
|
|
|
List<ProjectAlarmRule> projectAlarmRuleList = new ArrayList<>();
|
|
|
String alarmItemCode = addGroupAlarmRuleDTO.getAlarmItemCode();
|
|
|
+ String alarmItemName = addGroupAlarmRuleDTO.getAlarmItemName();
|
|
|
List<AddProjectAlarmRuleObjRelDTO> addRelationList = new ArrayList<>();
|
|
|
for (ProjectVO project : projects) {
|
|
|
ProjectAlarmRule projectAlarmRule = new ProjectAlarmRule();
|
|
|
projectAlarmRule.setProjectId(project.getProjectId());
|
|
|
projectAlarmRule.setAlarmItemCode(alarmItemCode);
|
|
|
+ projectAlarmRule.setAlarmItemName(alarmItemName);
|
|
|
projectAlarmRule.setBelong(INTEGER_ONE);
|
|
|
projectAlarmRule.setGroupId(addGroupAlarmRuleDTO.getGroupId());
|
|
|
String conditionId = getConditionId(alarmItemCode);
|