|
@@ -8,12 +8,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.google.common.base.CaseFormat;
|
|
|
+import com.google.gson.JsonArray;
|
|
|
+import com.google.gson.JsonObject;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.controller.GroupAlarmRuleController;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.dao.GroupAlarmRuleMapper;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.model.ConvertGroupAlarmRuleTool;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.model.dto.*;
|
|
|
import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
|
|
|
+import com.persagy.apm.alarmservice.group.management.model.equip.dto.QueryEquipDTO;
|
|
|
import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipItem;
|
|
|
import com.persagy.apm.alarmservice.group.management.service.impl.GroupManagementServiceImpl;
|
|
|
import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
|
|
@@ -23,6 +26,7 @@ import com.persagy.apm.alarmservice.project.alarmcondition.service.impl.AlarmCon
|
|
|
import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
|
|
|
import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.ProjectAlarmRuleObjRel;
|
|
|
import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
|
|
|
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
|
|
|
import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
|
|
|
import com.persagy.apm.common.constant.enums.ValidEnum;
|
|
|
import com.persagy.apm.common.context.AppContext;
|
|
@@ -97,25 +101,33 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
|
|
|
List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
|
|
|
for (AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO : addProjectAlarmRuleObjRelDTOS) {
|
|
|
AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
|
|
|
- String equipId = addProjectAlarmRuleObjRelDTO.getEquipId();
|
|
|
+ String equipId = addProjectAlarmRuleObjRelDTO.getObjId();
|
|
|
addAlarmConfigDTO.setObjId(equipId);
|
|
|
addAlarmConfigDTO.setItemCode(addGroupAlarmRuleDTO.getAlarmItemCode());
|
|
|
addAlarmConfigDTO.setClassCode(addGroupAlarmRuleDTO.getClassCode());
|
|
|
addAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
|
|
|
addAlarmConfigDTO.setCategory("Eqdx");
|
|
|
+ addAlarmConfigDTO.setOpen(1);
|
|
|
AlarmCondition condition = new AlarmCondition();
|
|
|
List<String> infoCodeList = (List<String>) conditionMap.get("infoCode");
|
|
|
- condition.setInfoCode(infoCodeList);
|
|
|
+ List<String> infoCodeNew = new ArrayList<>();
|
|
|
+ for (String infoCode : infoCodeList) {
|
|
|
+ String replacement = equipId + "-" + infoCode;
|
|
|
+ infoCodeNew.add(infoCode.replaceAll(infoCode, replacement));
|
|
|
+ }
|
|
|
+ condition.setInfoCode(infoCodeNew);
|
|
|
String backend = (String) conditionMap.get("backend");
|
|
|
for (String infoCode : infoCodeList) {
|
|
|
- String replacement = equipId+"-"+infoCode;
|
|
|
- backend = backend.replaceAll(infoCode,replacement);
|
|
|
+ String replacement = equipId + "-" + infoCode;
|
|
|
+ backend = backend.replaceAll(infoCode, replacement);
|
|
|
}
|
|
|
- condition.setEnd("!"+backend);
|
|
|
+ condition.setEnd("!" + backend);
|
|
|
condition.setEndUphold(0);
|
|
|
condition.setTrigger(backend);
|
|
|
- condition.setTriggerUphold(alarmCondition.getTriggerUphold()*60);
|
|
|
+ condition.setTriggerUphold(alarmCondition.getTriggerUphold() * 60);
|
|
|
condition.setRules((List<String>) conditionMap.get("displayFormula"));
|
|
|
+ JSONArray configs= JSONArray.parseArray(JSON.toJSONString(alarmCondition.getFrontend()));
|
|
|
+ condition.setConfigs(configs);
|
|
|
addAlarmConfigDTO.setCondition(condition);
|
|
|
alarmConfigs.add(addAlarmConfigDTO);
|
|
|
}
|
|
@@ -166,19 +178,30 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
|
|
|
groupAlarmRule = ConvertGroupAlarmRuleTool.INSTANCE.convertUpdateDto2Entity(groupAlarmRule, updateGroupAlarmRuleDTO);
|
|
|
groupAlarmRule.setModifier(AppContext.getContext().getAccountId());
|
|
|
updateById(groupAlarmRule);
|
|
|
+ //获得报警规则
|
|
|
UpdateAlarmConditionDTO alarmCondition = updateGroupAlarmRuleDTO.getAlarmCondition();
|
|
|
+ //更新报警规则
|
|
|
alarmConditionService.updateAlarmCondition(alarmCondition);
|
|
|
if (alarmCondition != null) {
|
|
|
//同步更新设备报警条件 begin
|
|
|
- BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
|
|
|
List<UpdateAlarmConfigDTO> updateAlarmConfigDTOs = new ArrayList();
|
|
|
String condition = updateGroupAlarmRuleDTO.getCondition();
|
|
|
String classCode = updateGroupAlarmRuleDTO.getClassCode();
|
|
|
- List<EquipItem> equipList = groupManagementService.getEquipList(condition, classCode);
|
|
|
+ List<ProjectVO> projects = projectAlarmRuleService.getProject();
|
|
|
+ List<EquipItem> records = new ArrayList<>();
|
|
|
+ for (ProjectVO project : projects) {
|
|
|
+ QueryEquipDTO queryEquipDTO = new QueryEquipDTO();
|
|
|
+ queryEquipDTO.setClassCode(classCode);
|
|
|
+ queryEquipDTO.setCondition(condition);
|
|
|
+ queryEquipDTO.setProjectId(project.getProjectId());
|
|
|
+ List<EquipItem> equipList = groupManagementService.getEquipList(queryEquipDTO);
|
|
|
+ records.addAll(equipList);
|
|
|
+ }
|
|
|
+
|
|
|
Map<String, Object> stringMap = alarmConditionService.frontend2Backend(alarmCondition.getFrontend());
|
|
|
- for (EquipItem record : equipList) {
|
|
|
+ for (EquipItem record : records) {
|
|
|
AlarmCondition alarmCondit = new AlarmCondition();
|
|
|
- alarmCondit.setTrigger((String) alarmCondition.getBackend());
|
|
|
+ alarmCondit.setTrigger(alarmCondition.getBackend());
|
|
|
List<String> infoCodeList = alarmCondition.getInfoCodes();
|
|
|
alarmCondit.setInfoCode(infoCodeList);
|
|
|
alarmCondit.setTriggerUphold(alarmCondition.getTriggerUphold());
|
|
@@ -189,8 +212,12 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
|
|
|
updateAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
|
|
|
updateAlarmConfigDTOs.add(updateAlarmConfigDTO);
|
|
|
}
|
|
|
- batchUpdateAlarmConfigDTO.setAlarmConfigs(updateAlarmConfigDTOs);
|
|
|
- alarmConfigService.batchUpdate(batchUpdateAlarmConfigDTO);
|
|
|
+ List<List<UpdateAlarmConfigDTO>> lists = averageAssign(updateAlarmConfigDTOs, 200);
|
|
|
+ for (List<UpdateAlarmConfigDTO> list : lists) {
|
|
|
+ BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
|
|
|
+ batchUpdateAlarmConfigDTO.setAlarmConfigs(list);
|
|
|
+ alarmConfigService.batchUpdate(batchUpdateAlarmConfigDTO);
|
|
|
+ }
|
|
|
//同步更新设备报警条件 end
|
|
|
}
|
|
|
|
|
@@ -364,4 +391,23 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
|
|
|
queryWrapper.eq(GroupAlarmRule.PROP_ALARM_ITEM_CODE, getGroupAlarmRuleDTO.getAlarmItemCode());
|
|
|
return getOne(queryWrapper);
|
|
|
}
|
|
|
+
|
|
|
+ public static <T> List<List<T>> averageAssign(List<T> source, int n) {
|
|
|
+ List<List<T>> result = new ArrayList<List<T>>();
|
|
|
+ int remainder = source.size() % n; //(先计算出余数)
|
|
|
+ int number = source.size() / n; //然后是商
|
|
|
+ int offset = 0;//偏移量
|
|
|
+ for (int i = 0; i < n; i++) {
|
|
|
+ List<T> value = null;
|
|
|
+ if (remainder > 0) {
|
|
|
+ value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
|
|
|
+ remainder--;
|
|
|
+ offset++;
|
|
|
+ } else {
|
|
|
+ value = source.subList(i * number + offset, (i + 1) * number + offset);
|
|
|
+ }
|
|
|
+ result.add(value);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|