|
@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -228,7 +229,7 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
|
|
|
}
|
|
|
|
|
|
//需要更新的
|
|
|
- List<AlarmDetailsEntity> DeviceStateAlarmDtoOlds =alarmlist.stream()
|
|
|
+ List<AlarmDetailsEntity> deviceStateAlarmDtoOlds =alarmlist.stream()
|
|
|
.filter(deviceCheckAlarmDto -> alarmDetailsDtoMap.containsKey(deviceCheckAlarmDto.getAlarmSettingId()))
|
|
|
.map(d ->{
|
|
|
AlarmDetailsDto alarmDetailsDto = alarmDetailsDtoMap.get(d.getAlarmSettingId());
|
|
@@ -252,19 +253,47 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
|
|
|
alarmDetailsDto.setState(0);
|
|
|
alarmDetailMapper.update(alarmDetailsDto);//直接更新
|
|
|
}
|
|
|
+
|
|
|
+ //报警恢复的删除工单
|
|
|
+ Map<Integer,AlarmDetailsEntity> AlarmDtoNewsMap = deviceStateAlarmDtoNews.stream().collect(Collectors.toMap(AlarmDetailsEntity::getDeviceId, a -> a,(k1, k2)->k1));
|
|
|
+ Map<Integer,AlarmDetailsEntity> AlarmDtoOldsMap = deviceStateAlarmDtoOlds.stream().collect(Collectors.toMap(AlarmDetailsEntity::getDeviceId, a -> a,(k1, k2)->k1));
|
|
|
+ Set<Long> deviceIds = alarmDetailsDtoMap.values().stream()
|
|
|
+ .filter(a -> !(AlarmDtoNewsMap.containsKey(a.getDeviceId())||AlarmDtoOldsMap.containsKey(a.getDeviceId())))
|
|
|
+ .map(a -> a.getDeviceId().longValue())
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ if(deviceIds.size()>0){
|
|
|
+ operationManagerClient.batchDeleteByAlarms(new ArrayList<>(deviceIds));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public void saveWorkOrderManageInfo(){
|
|
|
List<DeviceAlarmInfoForOrder> deviceAlarmInfoForOrders = alarmDetailMapper.getAlarmInfoForWorkOrderManage();
|
|
|
if(deviceAlarmInfoForOrders.size()>0){
|
|
|
+
|
|
|
+ //获取已经存在的设备工单
|
|
|
+ Set<Long> deviceIdSet = deviceAlarmInfoForOrders.stream().map(DeviceAlarmInfoForOrder::getDeviceId).collect(Collectors.toSet());
|
|
|
+ List<WorkOrderManageByAlarmDto> workOrders = operationManagerClient.findWorkOrderByDeviceIds(new ArrayList<>(deviceIdSet));
|
|
|
+ Map<Long,WorkOrderManageByAlarmDto> workOrderMap = workOrders.stream().collect(Collectors.toMap(WorkOrderManageByAlarmDto::getDeviceId, Function.identity(), (key1, key2) -> key2));
|
|
|
+
|
|
|
List<WorkOrderManageByAlarmDto> workOrderManageByAlarms = new ArrayList<>();
|
|
|
+ List<WorkOrderManageByAlarmDto> updates = new ArrayList<>();
|
|
|
List<DeviceAlarmInfoForOrder> errData= new ArrayList<>();
|
|
|
|
|
|
//组合工单,并发送消息
|
|
|
for(DeviceAlarmInfoForOrder deviceAlarmInfoForOrder : deviceAlarmInfoForOrders){
|
|
|
+ if(workOrderMap.containsKey(deviceAlarmInfoForOrder.getDeviceId()) && workOrderMap.get(deviceAlarmInfoForOrder.getDeviceId()) != null){
|
|
|
+ WorkOrderManageByAlarmDto orderManageByAlarmDto = workOrderMap.get(deviceAlarmInfoForOrder.getDeviceId());
|
|
|
+ orderManageByAlarmDto.setTaskDesc(orderManageByAlarmDto.getTaskDesc()+";"+deviceAlarmInfoForOrder.getTaskDesc());
|
|
|
+ updates.add(orderManageByAlarmDto);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
WorkOrderManageByAlarmDto workOrderManageByAlarm = new WorkOrderManageByAlarmDto();
|
|
|
workOrderManageByAlarm.setTaskNo(DatesUtil.formatDate(new Date(),"yyyyMMddHHmmssSSS")+((int) (Math.random()*(9999-1000)+1000)));
|
|
|
workOrderManageByAlarm.setTenantId(deviceAlarmInfoForOrder.getTenantId());
|
|
|
+ workOrderManageByAlarm.setParentSceneId(deviceAlarmInfoForOrder.getParentSceneId());
|
|
|
+ workOrderManageByAlarm.setParentSceneName(deviceAlarmInfoForOrder.getParentSceneName());
|
|
|
+ workOrderManageByAlarm.setDeviceId(deviceAlarmInfoForOrder.getDeviceId());
|
|
|
+ workOrderManageByAlarm.setDeviceName(deviceAlarmInfoForOrder.getDeviceName());
|
|
|
workOrderManageByAlarm.setCompanyOrgId(deviceAlarmInfoForOrder.getCompanyOrgId());
|
|
|
workOrderManageByAlarm.setDepartmentOrgId(deviceAlarmInfoForOrder.getDepartmentOrgId());
|
|
|
workOrderManageByAlarm.setAddress(deviceAlarmInfoForOrder.getAddress());
|
|
@@ -278,7 +307,7 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
|
|
|
message.setTenantId(deviceAlarmInfoForOrder.getTenantId());
|
|
|
message.setMessageId(UUID.randomUUID().toString());
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("工单类型","");
|
|
|
+ jsonObject.put("工单类型"," ");
|
|
|
jsonObject.put("工单编号",workOrderManageByAlarm.getTaskNo());
|
|
|
message.setMessageContent(jsonObject.toJSONString()); //消息内容,如果需要动态使用,配合模板使用{key:value}
|
|
|
message.setMessageType(7); //消息类型
|
|
@@ -311,9 +340,14 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
|
|
|
deviceAlarmInfoForOrders.removeAll(errData);
|
|
|
}
|
|
|
//保存工单
|
|
|
- Integer resut = operationManagerClient.saveByAlarms(workOrderManageByAlarms);
|
|
|
-
|
|
|
- if(resut > 0) {
|
|
|
+ if(workOrderManageByAlarms.size()>0){
|
|
|
+ operationManagerClient.saveByAlarms(workOrderManageByAlarms);
|
|
|
+ }
|
|
|
+ if(updates.size()>0){
|
|
|
+ operationManagerClient.updateByAlarms(updates);
|
|
|
+ }
|
|
|
+ if(deviceAlarmInfoForOrders.size()>0){
|
|
|
+ //标记报警已生成工单
|
|
|
alarmDetailMapper.updateAlarmSendMessageState(deviceAlarmInfoForOrders);
|
|
|
}
|
|
|
}
|