|
@@ -1,29 +1,44 @@
|
|
|
package com.persagy.apm.dmpalarm.service.impl;
|
|
|
|
|
|
-import cn.hutool.core.date.DateUtil;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.UUID;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.persagy.apm.dmpalarm.config.DmpParameterStorage;
|
|
|
import com.persagy.apm.dmpalarm.criteria.JsonCriteria;
|
|
|
-import com.persagy.apm.dmpalarm.enumeration.*;
|
|
|
+import com.persagy.apm.dmpalarm.enumeration.EnumAlarmListType;
|
|
|
+import com.persagy.apm.dmpalarm.enumeration.EnumAlarmLogType;
|
|
|
+import com.persagy.apm.dmpalarm.enumeration.EnumAlarmMessageType;
|
|
|
+import com.persagy.apm.dmpalarm.enumeration.EnumAlarmRecordWithColumns;
|
|
|
+import com.persagy.apm.dmpalarm.enumeration.EnumAlarmState;
|
|
|
+import com.persagy.apm.dmpalarm.enumeration.EnumAlarmTreatState;
|
|
|
import com.persagy.apm.dmpalarm.json.JacksonMapper;
|
|
|
import com.persagy.apm.dmpalarm.model.AlarmLog;
|
|
|
import com.persagy.apm.dmpalarm.model.AlarmRecord;
|
|
|
import com.persagy.apm.dmpalarm.model.DmpMessage;
|
|
|
import com.persagy.apm.dmpalarm.service.IAlarmLogService;
|
|
|
import com.persagy.apm.dmpalarm.service.IAlarmRecordService;
|
|
|
+import com.persagy.apm.dmpalarm.service.IShardingService;
|
|
|
import com.persagy.apm.dmpalarm.utils.CheckRequiredParam;
|
|
|
import com.persagy.apm.dmpalarm.utils.DatePatternStyle;
|
|
|
import com.persagy.apm.dmpalarm.web.MapResponse;
|
|
|
import com.persagy.apm.dmpalarm.web.PagedResponse;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
-import javax.annotation.Resource;
|
|
|
-import java.util.*;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
/**
|
|
|
* 报警记录(AlarmRecord) service层
|
|
@@ -35,291 +50,312 @@ import java.util.*;
|
|
|
@Slf4j
|
|
|
public class AlarmRecordServiceImpl extends BaseServiceImpl<AlarmRecord> implements IAlarmRecordService {
|
|
|
|
|
|
- @Resource
|
|
|
- private IAlarmLogService alarmLogService;
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- public PagedResponse<AlarmRecord> query(JsonCriteria jsonCriteria) {
|
|
|
- try {
|
|
|
- QueryWrapper<AlarmRecord> queryWrapper = criteriaUtils.handleAlarmConditions(jsonCriteria, AlarmRecord.class);
|
|
|
- this.addAlarmQueryCondition(jsonCriteria.getCriteria(), queryWrapper);
|
|
|
- PagedResponse<AlarmRecord> resp = criteriaUtils.getPagedResponse(jsonCriteria, AlarmRecord.class, queryWrapper, baseMapper);
|
|
|
-
|
|
|
- PagedResponse<AlarmRecord> resultAlarmRecordList = new PagedResponse<>();
|
|
|
- resultAlarmRecordList.setCount(resp.getCount());
|
|
|
- List<AlarmRecord> dataList = resp.getData();
|
|
|
- if (CollectionUtils.isEmpty(dataList)) {
|
|
|
- return resultAlarmRecordList;
|
|
|
- }
|
|
|
-
|
|
|
- // 如果需要查询日志相关的信息,需使用withColumns参数
|
|
|
- Set<String> withColumns = jsonCriteria.getWithColumns();
|
|
|
- boolean withLogInfo = !CollectionUtils.isEmpty(withColumns);
|
|
|
+ @Resource
|
|
|
+ private IAlarmLogService alarmLogService;
|
|
|
+ @Resource
|
|
|
+ private IShardingService shardingService;
|
|
|
|
|
|
- Map<String, List<AlarmLog>> alarmLogListMap = new HashMap<>();
|
|
|
- // 获取报警日志
|
|
|
- if (withLogInfo && (withColumns.contains(EnumAlarmRecordWithColumns.ignoreTime.name())
|
|
|
- || withColumns.contains(EnumAlarmRecordWithColumns.treatEndTime.name()))) {
|
|
|
- List<String> recordIdList = new ArrayList<>();
|
|
|
- dataList.forEach(alarmRecord -> recordIdList.add(alarmRecord.getId()));
|
|
|
- alarmLogListMap = alarmLogService.getAlarmLogMap(recordIdList);
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public PagedResponse<AlarmRecord> query(JsonCriteria jsonCriteria) {
|
|
|
+ try {
|
|
|
+ QueryWrapper<AlarmRecord> queryWrapper = criteriaUtils.handleAlarmConditions(jsonCriteria,
|
|
|
+ AlarmRecord.class);
|
|
|
+ this.addAlarmQueryCondition(jsonCriteria.getCriteria(), queryWrapper);
|
|
|
+ JSONObject criteria = jsonCriteria.getCriteria();
|
|
|
+ JSONObject triggerTimeJson = criteria.getJSONObject("triggerTime");
|
|
|
+ Date startTime = null;
|
|
|
+ Date endTime = null;
|
|
|
+ if (null != triggerTimeJson && !triggerTimeJson.isEmpty()) {
|
|
|
+ String gt = triggerTimeJson.getString("$gt");
|
|
|
+ gt = StringUtils.isNotBlank(gt) ? gt : triggerTimeJson.getString("$gte");
|
|
|
+ if (StringUtils.isNotBlank(gt)) {
|
|
|
+ startTime = DateUtil.parse(gt);
|
|
|
+ }
|
|
|
+ String lt = triggerTimeJson.getString("$lt");
|
|
|
+ lt = StringUtils.isNotBlank(lt) ? lt : triggerTimeJson.getString("$lte");
|
|
|
+ if (StringUtils.isNotBlank(lt)) {
|
|
|
+ endTime = DateUtil.parse(lt);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- List<AlarmRecord> alarmRecordModels = new ArrayList<>(dataList.size());
|
|
|
- for (AlarmRecord entity : dataList) {
|
|
|
- alarmRecordModels.add(entity);
|
|
|
+ PagedResponse<AlarmRecord> resp = shardingService.selectShardingPageList(AlarmRecord.class, queryWrapper,
|
|
|
+ jsonCriteria.getPage(), jsonCriteria.getSize(), startTime, endTime);
|
|
|
+ PagedResponse<AlarmRecord> resultAlarmRecordList = new PagedResponse<>();
|
|
|
+ resultAlarmRecordList.setCount(resp.getCount());
|
|
|
+ List<AlarmRecord> dataList = resp.getData();
|
|
|
+ if (CollectionUtils.isEmpty(dataList)) {
|
|
|
+ return resultAlarmRecordList;
|
|
|
+ }
|
|
|
|
|
|
- if (!withLogInfo) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 如果需要日志信息
|
|
|
- List<AlarmLog> alarmLogList = new ArrayList<>();
|
|
|
- if (alarmLogListMap.containsKey(entity.getId())) {
|
|
|
- alarmLogList = alarmLogListMap.get(entity.getId());
|
|
|
- }
|
|
|
- if (withColumns.contains(EnumAlarmRecordWithColumns.ignoreTime.name())) {
|
|
|
- Date ignoreAlarmTime = getCreateTime(alarmLogList, EnumAlarmLogType.TREATMODE, 1);
|
|
|
- entity.setIgnoreTime(ignoreAlarmTime);
|
|
|
- }
|
|
|
- if (withColumns.contains(EnumAlarmRecordWithColumns.treatEndTime.name())) {
|
|
|
- Date treatEndTime = getCreateTime(alarmLogList, EnumAlarmLogType.TREATSTATE, 3);
|
|
|
- entity.setTreatEndTime(treatEndTime);
|
|
|
- }
|
|
|
- }
|
|
|
- resultAlarmRecordList.setData(alarmRecordModels);
|
|
|
- return resultAlarmRecordList;
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("alarmRecord query page error JsonCriteria is {}", jsonCriteria.toString(), e);
|
|
|
- }
|
|
|
- return new PagedResponse<>();
|
|
|
- }
|
|
|
+ // 如果需要查询日志相关的信息,需使用withColumns参数
|
|
|
+ Set<String> withColumns = jsonCriteria.getWithColumns();
|
|
|
+ boolean withLogInfo = !CollectionUtils.isEmpty(withColumns);
|
|
|
|
|
|
- public Date getCreateTime(List<AlarmLog> alarmLogList, EnumAlarmLogType type, int after) {
|
|
|
- Date createTime = null;
|
|
|
- if (!CollectionUtils.isEmpty(alarmLogList)) {
|
|
|
- for (AlarmLog alarmLog : alarmLogList) {
|
|
|
- if (type.equals(alarmLog.getType()) && alarmLog.getAfter() == after) {
|
|
|
- createTime = alarmLog.getCreateTime();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return createTime;
|
|
|
- }
|
|
|
+ Map<String, List<AlarmLog>> alarmLogListMap = new HashMap<>();
|
|
|
+ // 获取报警日志
|
|
|
+ if (withLogInfo && (withColumns.contains(EnumAlarmRecordWithColumns.ignoreTime.name())
|
|
|
+ || withColumns.contains(EnumAlarmRecordWithColumns.treatEndTime.name()))) {
|
|
|
+ List<String> recordIdList = new ArrayList<>();
|
|
|
+ dataList.forEach(alarmRecord -> recordIdList.add(alarmRecord.getId()));
|
|
|
+ alarmLogListMap = alarmLogService.getAlarmLogMap(recordIdList);
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 添加查询报警条件 CURRENT 当前报警 HISTORY 历史报警
|
|
|
- *
|
|
|
- * @param <T> entity object
|
|
|
- * @param criteria JSONObject
|
|
|
- * @param queryWrappers query alarm criteria
|
|
|
- */
|
|
|
- private <T> void addAlarmQueryCondition(JSONObject criteria, QueryWrapper<T> queryWrappers) {
|
|
|
- String listType = criteria.getString("listType");
|
|
|
- if (EnumAlarmListType.CURRENT.name().equals(listType)) {
|
|
|
- queryWrappers.and(andWrapper -> andWrapper.eq(AlarmRecord.PROP_STATE, EnumAlarmState.UN_HANDLE.getType())
|
|
|
- .or(orw -> orw.eq(AlarmRecord.PROP_TREAT_STATE, EnumAlarmState.UN_HANDLE.getType())
|
|
|
- .eq(AlarmRecord.PROP_TREAT_STATE, EnumAlarmTreatState.HANDLING.getType())));
|
|
|
- }
|
|
|
+ List<AlarmRecord> alarmRecordModels = new ArrayList<>(dataList.size());
|
|
|
+ for (AlarmRecord entity : dataList) {
|
|
|
+ alarmRecordModels.add(entity);
|
|
|
|
|
|
- if (EnumAlarmListType.HISTORY.name().equals(listType)) {
|
|
|
- queryWrappers.and(andWrapper -> andWrapper.eq(AlarmRecord.PROP_STATE, EnumAlarmState.END.getType())
|
|
|
- .or(orw -> orw.eq(AlarmRecord.PROP_STATE, EnumAlarmState.EXPIRE.getType())
|
|
|
- .eq(AlarmRecord.PROP_TREAT_STATE, EnumAlarmTreatState.DONE.getType())));
|
|
|
+ if (!withLogInfo) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 如果需要日志信息
|
|
|
+ List<AlarmLog> alarmLogList = new ArrayList<>();
|
|
|
+ if (alarmLogListMap.containsKey(entity.getId())) {
|
|
|
+ alarmLogList = alarmLogListMap.get(entity.getId());
|
|
|
+ }
|
|
|
+ if (withColumns.contains(EnumAlarmRecordWithColumns.ignoreTime.name())) {
|
|
|
+ Date ignoreAlarmTime = getCreateTime(alarmLogList, EnumAlarmLogType.TREATMODE, 1);
|
|
|
+ entity.setIgnoreTime(ignoreAlarmTime);
|
|
|
+ }
|
|
|
+ if (withColumns.contains(EnumAlarmRecordWithColumns.treatEndTime.name())) {
|
|
|
+ Date treatEndTime = getCreateTime(alarmLogList, EnumAlarmLogType.TREATSTATE, 3);
|
|
|
+ entity.setTreatEndTime(treatEndTime);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resultAlarmRecordList.setData(alarmRecordModels);
|
|
|
+ return resultAlarmRecordList;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("alarmRecord query page error JsonCriteria is {}", jsonCriteria.toString(), e);
|
|
|
+ }
|
|
|
+ return new PagedResponse<>();
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- }
|
|
|
+ public Date getCreateTime(List<AlarmLog> alarmLogList, EnumAlarmLogType type, int after) {
|
|
|
+ Date createTime = null;
|
|
|
+ if (!CollectionUtils.isEmpty(alarmLogList)) {
|
|
|
+ for (AlarmLog alarmLog : alarmLogList) {
|
|
|
+ if (type.equals(alarmLog.getType()) && alarmLog.getAfter() == after) {
|
|
|
+ createTime = alarmLog.getCreateTime();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return createTime;
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public MapResponse create(AlarmRecord entity) {
|
|
|
- MapResponse response = new MapResponse();
|
|
|
- AlarmParam alarmParam = prepareParam(response);
|
|
|
- if (alarmParam == null) {
|
|
|
- return response;
|
|
|
- }
|
|
|
- // 必填项校验
|
|
|
- String checkResult = CheckRequiredParam.check(entity, "itemCode", "objId", "level");
|
|
|
- if (!StringUtils.isEmpty(checkResult)) {
|
|
|
- response.setFail(checkResult);
|
|
|
- return response;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 添加查询报警条件 CURRENT 当前报警 HISTORY 历史报警
|
|
|
+ *
|
|
|
+ * @param <T> entity object
|
|
|
+ * @param criteria JSONObject
|
|
|
+ * @param queryWrappers query alarm criteria
|
|
|
+ */
|
|
|
+ private <T> void addAlarmQueryCondition(JSONObject criteria, QueryWrapper<T> queryWrappers) {
|
|
|
+ String listType = criteria.getString("listType");
|
|
|
+ if (EnumAlarmListType.CURRENT.name().equals(listType)) {
|
|
|
+ queryWrappers.and(andWrapper -> andWrapper.eq(AlarmRecord.PROP_STATE, EnumAlarmState.UN_HANDLE.getType())
|
|
|
+ .or(orw -> orw.eq(AlarmRecord.PROP_TREAT_STATE, EnumAlarmState.UN_HANDLE.getType())
|
|
|
+ .eq(AlarmRecord.PROP_TREAT_STATE, EnumAlarmTreatState.HANDLING.getType())));
|
|
|
+ }
|
|
|
|
|
|
- String id = UUID.randomUUID().toString();
|
|
|
- // 如果创建时,入参包含id,则使用入参中的id。但需要先校验id是否已存在
|
|
|
- if (!StringUtils.isEmpty(entity.getId())) {
|
|
|
+ if (EnumAlarmListType.HISTORY.name().equals(listType)) {
|
|
|
+ queryWrappers.and(andWrapper -> andWrapper.eq(AlarmRecord.PROP_STATE, EnumAlarmState.END.getType())
|
|
|
+ .or(orw -> orw.eq(AlarmRecord.PROP_STATE, EnumAlarmState.EXPIRE.getType())
|
|
|
+ .eq(AlarmRecord.PROP_TREAT_STATE, EnumAlarmTreatState.DONE.getType())));
|
|
|
|
|
|
- AlarmRecord alarmRecord = getById(entity.getId());
|
|
|
- if (null != alarmRecord) {
|
|
|
- response.setFail("已存在相同id的报警记录!创建失败!");
|
|
|
- return response;
|
|
|
- } else {
|
|
|
- id = entity.getId();
|
|
|
- }
|
|
|
- }
|
|
|
- entity.setId(id);
|
|
|
- entity.setCreateUser(alarmParam.userId);
|
|
|
- if (entity.getCreateTime() != null) {
|
|
|
- entity.setCreateTime(entity.getCreateTime());
|
|
|
- } else {
|
|
|
- entity.setCreateTime(new Date());
|
|
|
- }
|
|
|
- // 默认处理状态为未处理
|
|
|
- if (entity.getTreatState() == null) {
|
|
|
- entity.setTreatState(1);
|
|
|
- }
|
|
|
- entity.setValid(1);
|
|
|
- entity.setProjectId(alarmParam.projectId);
|
|
|
- entity.setGroupCode(alarmParam.groupCode);
|
|
|
- save(entity);
|
|
|
- response.add("id", entity.getId());
|
|
|
- // 推送消息至mq
|
|
|
- DmpMessage msg = new DmpMessage();
|
|
|
- msg.setMid(UUID.randomUUID().toString());
|
|
|
- msg.setType(EnumAlarmMessageType.ALARM_RECORD_CREATE.getValue());
|
|
|
- return getMapResponse(entity, response, msg);
|
|
|
- }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- private MapResponse getMapResponse(AlarmRecord entity, MapResponse response, DmpMessage msg) {
|
|
|
- msg.setGroupCode(DmpParameterStorage.getGroupCode());
|
|
|
- msg.setProjectId(DmpParameterStorage.getProjectId());
|
|
|
- msg.setTargetId(entity.getId());
|
|
|
- msg.add("obj", JacksonMapper.toSimpleJson(entity));
|
|
|
- msg.setAppId(DmpParameterStorage.getAppId());
|
|
|
- msg.setSendTime(DateUtil.format(new Date(), DatePatternStyle.PATTERN_YYYYMMDDHHMMSS));
|
|
|
- response.add(msg);
|
|
|
- return response;
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public MapResponse create(AlarmRecord entity) {
|
|
|
+ MapResponse response = new MapResponse();
|
|
|
+ AlarmParam alarmParam = prepareParam(response);
|
|
|
+ if (alarmParam == null) {
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+ // 必填项校验
|
|
|
+ String checkResult = CheckRequiredParam.check(entity, "itemCode", "objId", "level");
|
|
|
+ if (!StringUtils.isEmpty(checkResult)) {
|
|
|
+ response.setFail(checkResult);
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+ String id = UUID.randomUUID().toString();
|
|
|
+ // 如果创建时,入参包含id,则使用入参中的id。但需要先校验id是否已存在
|
|
|
+ if (!StringUtils.isEmpty(entity.getId())) {
|
|
|
+ AlarmRecord alarmRecord = shardingService.getById(entity.getClass(), id);
|
|
|
+ if (null != alarmRecord) {
|
|
|
+ response.setFail("已存在相同id的报警记录!创建失败!");
|
|
|
+ return response;
|
|
|
+ } else {
|
|
|
+ id = entity.getId();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ entity.setId(id);
|
|
|
+ entity.setCreateUser(alarmParam.userId);
|
|
|
+ if (entity.getCreateTime() != null) {
|
|
|
+ entity.setCreateTime(entity.getCreateTime());
|
|
|
+ } else {
|
|
|
+ entity.setCreateTime(new Date());
|
|
|
+ }
|
|
|
+ // 默认处理状态为未处理
|
|
|
+ if (entity.getTreatState() == null) {
|
|
|
+ entity.setTreatState(1);
|
|
|
+ }
|
|
|
+ entity.setValid(1);
|
|
|
+ entity.setProjectId(alarmParam.projectId);
|
|
|
+ entity.setGroupCode(alarmParam.groupCode);
|
|
|
+ if (entity.getState() == 1 || (entity.getTreatState() == 1 && entity.getTreatState() == 2)) {
|
|
|
+ entity.setAlarmState(0);
|
|
|
+ } else {
|
|
|
+ entity.setAlarmState(1);
|
|
|
+ }
|
|
|
+ shardingService.save(entity, entity.getTriggerTime());
|
|
|
+ response.add("id", entity.getId());
|
|
|
+ // 推送消息至mq
|
|
|
+ DmpMessage msg = new DmpMessage();
|
|
|
+ msg.setMid(UUID.randomUUID().toString());
|
|
|
+ msg.setType(EnumAlarmMessageType.ALARM_RECORD_CREATE.getValue());
|
|
|
+ return getMapResponse(entity, response, msg);
|
|
|
+ }
|
|
|
|
|
|
- private AlarmLog initAlarmLogModel(AlarmRecord param) {
|
|
|
- AlarmLog alarmLog = new AlarmLog();
|
|
|
- alarmLog.setRecordId(param.getId());
|
|
|
- alarmLog.setCreateTime(new Date());
|
|
|
- alarmLog.setCreateUser(DmpParameterStorage.getUserId());
|
|
|
- alarmLog.setProjectId(DmpParameterStorage.getProjectId());
|
|
|
- alarmLog.setGroupCode(DmpParameterStorage.getGroupCode());
|
|
|
- return alarmLog;
|
|
|
- }
|
|
|
+ private MapResponse getMapResponse(AlarmRecord entity, MapResponse response, DmpMessage msg) {
|
|
|
+ msg.setGroupCode(DmpParameterStorage.getGroupCode());
|
|
|
+ msg.setProjectId(DmpParameterStorage.getProjectId());
|
|
|
+ msg.setTargetId(entity.getId());
|
|
|
+ msg.add("obj", JacksonMapper.toSimpleJson(entity));
|
|
|
+ msg.setAppId(DmpParameterStorage.getAppId());
|
|
|
+ msg.setSendTime(DateUtil.format(new Date(), DatePatternStyle.PATTERN_YYYYMMDDHHMMSS));
|
|
|
+ response.add(msg);
|
|
|
+ return response;
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public MapResponse update(AlarmRecord param) {
|
|
|
- MapResponse response = new MapResponse();
|
|
|
- AlarmRecord alarmRecord = getById(param.getId());
|
|
|
- if (alarmRecord == null) {
|
|
|
- response.setFail("无法获取到要更新的数据!");
|
|
|
- return response;
|
|
|
- }
|
|
|
- AlarmParam alarmParam = prepareParam(response);
|
|
|
- if (alarmParam == null) {
|
|
|
- return response;
|
|
|
- }
|
|
|
- if (param.getName() != null && !param.getName().isEmpty()) {
|
|
|
- alarmRecord.setName(param.getName());
|
|
|
- }
|
|
|
- if (param.getRemark() != null && !param.getRemark().isEmpty()) {
|
|
|
- alarmRecord.setRemark(param.getRemark());
|
|
|
- }
|
|
|
- // 状态修改记录日志
|
|
|
- if (param.getState() != null) {
|
|
|
- if (!param.getState().equals(alarmRecord.getState())) {
|
|
|
- AlarmLog alarmLog = initAlarmLogModel(param);
|
|
|
- alarmLog.setType(EnumAlarmLogType.ALARMSTATE);
|
|
|
- alarmLog.setNature(alarmRecord.getNature());
|
|
|
- alarmLog.setBefore(alarmRecord.getState());
|
|
|
- alarmLog.setAfter(param.getState());
|
|
|
- alarmLogService.create(alarmLog);
|
|
|
- }
|
|
|
- alarmRecord.setState(param.getState());
|
|
|
- }
|
|
|
- if (param.getNature() != null) {
|
|
|
- alarmRecord.setNature(param.getNature());
|
|
|
- }
|
|
|
- // 处理方式修改记录日志
|
|
|
- if (param.getTreatMode() != null) {
|
|
|
- if (!param.getTreatMode().equals(alarmRecord.getTreatMode())) {
|
|
|
- AlarmLog alarmLogModel = initAlarmLogModel(param);
|
|
|
- alarmLogModel.setType(EnumAlarmLogType.TREATMODE);
|
|
|
- alarmLogModel.setNature(alarmRecord.getNature());
|
|
|
- alarmLogModel.setBefore(alarmRecord.getTreatMode());
|
|
|
- alarmLogModel.setAfter(param.getTreatMode());
|
|
|
- alarmLogService.create(alarmLogModel);
|
|
|
- }
|
|
|
- alarmRecord.setTreatMode(param.getTreatMode());
|
|
|
- }
|
|
|
- // 处理状态更改记录日志
|
|
|
- if (param.getTreatState() != null) {
|
|
|
- if (!param.getTreatState().equals(alarmRecord.getTreatState())) {
|
|
|
- AlarmLog alarmLogModel = initAlarmLogModel(param);
|
|
|
- alarmLogModel.setType(EnumAlarmLogType.TREATSTATE);
|
|
|
- alarmLogModel.setNature(alarmRecord.getNature());
|
|
|
- alarmLogModel.setBefore(alarmRecord.getTreatState());
|
|
|
- alarmLogModel.setAfter(param.getTreatState());
|
|
|
- alarmLogService.create(alarmLogModel);
|
|
|
- }
|
|
|
- alarmRecord.setTreatState(param.getTreatState());
|
|
|
- }
|
|
|
+ private AlarmLog initAlarmLogModel(AlarmRecord param) {
|
|
|
+ AlarmLog alarmLog = new AlarmLog();
|
|
|
+ alarmLog.setRecordId(param.getId());
|
|
|
+ alarmLog.setCreateTime(new Date());
|
|
|
+ alarmLog.setCreateUser(DmpParameterStorage.getUserId());
|
|
|
+ alarmLog.setProjectId(DmpParameterStorage.getProjectId());
|
|
|
+ alarmLog.setGroupCode(DmpParameterStorage.getGroupCode());
|
|
|
+ return alarmLog;
|
|
|
+ }
|
|
|
|
|
|
- // 恢复值
|
|
|
- if (param.getEndInfo() != null) {
|
|
|
- alarmRecord.setEndInfo(param.getEndInfo());
|
|
|
- }
|
|
|
- // 恢复时间
|
|
|
- if (param.getEndTime() != null) {
|
|
|
- alarmRecord.setEndTime(param.getEndTime());
|
|
|
- }
|
|
|
- // 工单id
|
|
|
- if (param.getOrderId() != null) {
|
|
|
- alarmRecord.setOrderId(param.getOrderId());
|
|
|
- }
|
|
|
- // 工单状态
|
|
|
- if (param.getOrderState() != null) {
|
|
|
- alarmRecord.setOrderState(param.getOrderState());
|
|
|
- }
|
|
|
- // 补充说明
|
|
|
- if (param.getSupplement() != null) {
|
|
|
- alarmRecord.setSupplement(param.getSupplement());
|
|
|
- }
|
|
|
- // 报警等级
|
|
|
- if (!StringUtils.isEmpty(param.getLevel())) {
|
|
|
- alarmRecord.setLevel(param.getLevel());
|
|
|
- }
|
|
|
- alarmRecord.setUpdateUser(alarmParam.userId);
|
|
|
- alarmRecord.setUpdateTime(new Date());
|
|
|
- save(alarmRecord);
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public MapResponse update(AlarmRecord param) {
|
|
|
+ MapResponse response = new MapResponse();
|
|
|
+ AlarmRecord alarmRecord = shardingService.getById(AlarmRecord.class, param.getId());
|
|
|
+ if (alarmRecord == null) {
|
|
|
+ response.setFail("无法获取到要更新的数据!");
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+ AlarmParam alarmParam = prepareParam(response);
|
|
|
+ if (alarmParam == null) {
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+ if (param.getName() != null && !param.getName().isEmpty()) {
|
|
|
+ alarmRecord.setName(param.getName());
|
|
|
+ }
|
|
|
+ if (param.getRemark() != null && !param.getRemark().isEmpty()) {
|
|
|
+ alarmRecord.setRemark(param.getRemark());
|
|
|
+ }
|
|
|
+ // 状态修改记录日志
|
|
|
+ if (param.getState() != null) {
|
|
|
+ if (!param.getState().equals(alarmRecord.getState())) {
|
|
|
+ AlarmLog alarmLog = initAlarmLogModel(param);
|
|
|
+ alarmLog.setType(EnumAlarmLogType.ALARMSTATE);
|
|
|
+ alarmLog.setNature(alarmRecord.getNature());
|
|
|
+ alarmLog.setBefore(alarmRecord.getState());
|
|
|
+ alarmLog.setAfter(param.getState());
|
|
|
+ alarmLogService.create(alarmLog);
|
|
|
+ }
|
|
|
+ alarmRecord.setState(param.getState());
|
|
|
+ }
|
|
|
+ if (param.getNature() != null) {
|
|
|
+ alarmRecord.setNature(param.getNature());
|
|
|
+ }
|
|
|
+ // 处理方式修改记录日志
|
|
|
+ if (param.getTreatMode() != null) {
|
|
|
+ if (!param.getTreatMode().equals(alarmRecord.getTreatMode())) {
|
|
|
+ AlarmLog alarmLogModel = initAlarmLogModel(param);
|
|
|
+ alarmLogModel.setType(EnumAlarmLogType.TREATMODE);
|
|
|
+ alarmLogModel.setNature(alarmRecord.getNature());
|
|
|
+ alarmLogModel.setBefore(alarmRecord.getTreatMode());
|
|
|
+ alarmLogModel.setAfter(param.getTreatMode());
|
|
|
+ alarmLogService.create(alarmLogModel);
|
|
|
+ }
|
|
|
+ alarmRecord.setTreatMode(param.getTreatMode());
|
|
|
+ }
|
|
|
+ // 处理状态更改记录日志
|
|
|
+ if (param.getTreatState() != null) {
|
|
|
+ if (!param.getTreatState().equals(alarmRecord.getTreatState())) {
|
|
|
+ AlarmLog alarmLogModel = initAlarmLogModel(param);
|
|
|
+ alarmLogModel.setType(EnumAlarmLogType.TREATSTATE);
|
|
|
+ alarmLogModel.setNature(alarmRecord.getNature());
|
|
|
+ alarmLogModel.setBefore(alarmRecord.getTreatState());
|
|
|
+ alarmLogModel.setAfter(param.getTreatState());
|
|
|
+ alarmLogService.create(alarmLogModel);
|
|
|
+ }
|
|
|
+ alarmRecord.setTreatState(param.getTreatState());
|
|
|
+ }
|
|
|
|
|
|
- response.add("id", alarmRecord.getId());
|
|
|
- // 推送消息至mq
|
|
|
- DmpMessage msg = new DmpMessage();
|
|
|
- msg.setMid(UUID.randomUUID().toString());
|
|
|
- msg.setType(EnumAlarmMessageType.ALARM_RECORD_UPDATE.getValue());
|
|
|
- return getMapResponse(alarmRecord, response, msg);
|
|
|
+ // 恢复值
|
|
|
+ if (param.getEndInfo() != null) {
|
|
|
+ alarmRecord.setEndInfo(param.getEndInfo());
|
|
|
+ }
|
|
|
+ // 恢复时间
|
|
|
+ if (param.getEndTime() != null) {
|
|
|
+ alarmRecord.setEndTime(param.getEndTime());
|
|
|
+ }
|
|
|
+ // 工单id
|
|
|
+ if (param.getOrderId() != null) {
|
|
|
+ alarmRecord.setOrderId(param.getOrderId());
|
|
|
+ }
|
|
|
+ // 工单状态
|
|
|
+ if (param.getOrderState() != null) {
|
|
|
+ alarmRecord.setOrderState(param.getOrderState());
|
|
|
+ }
|
|
|
+ // 补充说明
|
|
|
+ if (param.getSupplement() != null) {
|
|
|
+ alarmRecord.setSupplement(param.getSupplement());
|
|
|
+ }
|
|
|
+ // 报警等级
|
|
|
+ if (!StringUtils.isEmpty(param.getLevel())) {
|
|
|
+ alarmRecord.setLevel(param.getLevel());
|
|
|
+ }
|
|
|
+ alarmRecord.setUpdateUser(alarmParam.userId);
|
|
|
+ alarmRecord.setUpdateTime(new Date());
|
|
|
+ shardingService.saveOrUpdate(alarmRecord, alarmRecord.getTriggerTime());
|
|
|
+ response.add("id", alarmRecord.getId());
|
|
|
+ // 推送消息至mq
|
|
|
+ DmpMessage msg = new DmpMessage();
|
|
|
+ msg.setMid(UUID.randomUUID().toString());
|
|
|
+ msg.setType(EnumAlarmMessageType.ALARM_RECORD_UPDATE.getValue());
|
|
|
+ return getMapResponse(alarmRecord, response, msg);
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public MapResponse batchUpdate(AlarmRecord param) {
|
|
|
- MapResponse response = new MapResponse();
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public MapResponse batchUpdate(AlarmRecord param) {
|
|
|
+ MapResponse response = new MapResponse();
|
|
|
|
|
|
- List<AlarmRecord> alarmRecordModelList = param.getAlarmRecordModels();
|
|
|
- if (CollectionUtils.isEmpty(alarmRecordModelList)) {
|
|
|
- response.setFail("批量更新报警记录,没有传入需要更新的对象");
|
|
|
- return response;
|
|
|
- }
|
|
|
+ List<AlarmRecord> alarmRecordModelList = param.getAlarmRecordModels();
|
|
|
+ if (CollectionUtils.isEmpty(alarmRecordModelList)) {
|
|
|
+ response.setFail("批量更新报警记录,没有传入需要更新的对象");
|
|
|
+ return response;
|
|
|
+ }
|
|
|
|
|
|
- // 一次最多更新200条数据
|
|
|
- if (alarmRecordModelList.size() > 200) {
|
|
|
- response.setFail("一次最多更新200条数据");
|
|
|
- return response;
|
|
|
- }
|
|
|
+ // 一次最多更新200条数据
|
|
|
+ if (alarmRecordModelList.size() > 200) {
|
|
|
+ response.setFail("一次最多更新200条数据");
|
|
|
+ return response;
|
|
|
+ }
|
|
|
|
|
|
- List<DmpMessage> msgList = new ArrayList<>();
|
|
|
- alarmRecordModelList.forEach(alarmRecordModel -> {
|
|
|
- MapResponse updateResponse = update(alarmRecordModel);
|
|
|
- msgList.addAll(updateResponse.getMessageList());
|
|
|
- });
|
|
|
- response.add(msgList);
|
|
|
- return response;
|
|
|
- }
|
|
|
+ List<DmpMessage> msgList = new ArrayList<>();
|
|
|
+ alarmRecordModelList.forEach(alarmRecordModel -> {
|
|
|
+ MapResponse updateResponse = update(alarmRecordModel);
|
|
|
+ msgList.addAll(updateResponse.getMessageList());
|
|
|
+ });
|
|
|
+ response.add(msgList);
|
|
|
+ return response;
|
|
|
+ }
|
|
|
}
|