Browse Source

修改报警设置删除报警工单

wangli 4 years ago
parent
commit
cb93346200

+ 1 - 1
sms_water/src/main/java/com/huaxu/dao/AlarmDetailMapper.java

@@ -123,7 +123,7 @@ public interface AlarmDetailMapper {
      * 查询设备报警信息
      * @return
      */
-    List<AlarmDetailsDto> selectStateAlarm(@Param("deviceId") Integer deviceId, @Param("alarmType") String alarmType);
+    List<AlarmDetailsDto> selectStateAlarm(@Param("deviceId") Integer deviceId, @Param("alarmType") String alarmType,@Param("alarmSettingIds") List<Long> alarmSettingIds);
 
 
     Integer udpateLastUpdateTime(@Param("deviceId") Integer deviceId, @Param("lastUpdateTime") Date lastUpdateTime);

+ 3 - 2
sms_water/src/main/java/com/huaxu/rabbitmq/ReceiveData.java

@@ -165,7 +165,7 @@ public class ReceiveData {
            if(deviceCheckAlarmDtos.size()>0 && StringUtils.isNotBlank(deviceCheckAlarmDtos.get(0).getIdentifiter())){
                Integer deviceId= deviceCheckAlarmDtos.get(0).getDeviceId();
                //系统中已存在的报警信息
-               List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(deviceId,"参数报警");
+               List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(deviceId,"参数报警",null);
                //已存在的报警信息转为map方便匹配alarmSettingId
                Map<Integer,AlarmDetailsDto> alarmDetailsDtoMap = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getAlarmSettingId, a -> a,(k1, k2)->k1));
 
@@ -275,7 +275,8 @@ public class ReceiveData {
                                    .replace(alarmDetailsDto.getAlarmContent(),"");
                        }
                        orderManageByAlarmDto.setTaskDesc(taskDesc);
-                       if(orderManageByAlarmDto != null && orderManageByAlarmDto.getOrderStatus() == 0
+                       if(orderManageByAlarmDto != null
+                               && (orderManageByAlarmDto.getOrderStatus() == null || orderManageByAlarmDto.getOrderStatus() == 0)
                                && StringUtils.isBlank(taskDesc)){
                            //工单未派单且无报警信息,删除工单
                            operationManagerClient.batchDeleteByAlarms(new ArrayList<>(deviceIds));

+ 49 - 3
sms_water/src/main/java/com/huaxu/service/AlarmSettingService.java

@@ -4,15 +4,22 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.huaxu.client.OperationManagerClient;
+import com.huaxu.common.StringUtils;
+import com.huaxu.dao.AlarmDetailMapper;
 import com.huaxu.dao.AlarmSettingMapper;
+import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.dto.AlarmSettingDto;
+import com.huaxu.dto.WorkOrderManageByAlarmDto;
 import com.huaxu.entity.AlarmSetting;
-import org.apache.commons.lang3.StringUtils;
+import com.huaxu.model.LoginUser;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -25,6 +32,11 @@ import java.util.List;
 public class AlarmSettingService extends ServiceImpl<AlarmSettingMapper, AlarmSetting> {
     @Resource
     private AlarmSettingMapper alarmSettingMapper;
+
+    @Resource
+    private AlarmDetailMapper alarmDetailMapper;
+    @Autowired
+    private OperationManagerClient operationManagerClient;
     /**
      * 删除数据
      *
@@ -83,7 +95,41 @@ public class AlarmSettingService extends ServiceImpl<AlarmSettingMapper, AlarmSe
      * @param
      * @return
      */
-    public Integer updateRealtimeAlarm(Long[] ids,String updateBy) {
-        return alarmSettingMapper.updateRealtimeAlarm(Arrays.asList(ids),updateBy);
+    public void updateRealtimeAlarm(Long[] ids,String updateBy) {
+        //系统中已存在的离线报警
+        List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(null,null,Arrays.asList(ids));
+
+        if(alarmDetailsDtos.size() > 0){
+            //处理完成后,剩下的标记为历史数据
+            List<Long> deviceIds = new ArrayList<>();
+            deviceIds.add(alarmDetailsDtos.get(0).getDeviceId().longValue());
+            List<WorkOrderManageByAlarmDto> workOrders = operationManagerClient.findWorkOrderByDeviceIds(deviceIds);
+            if(workOrders.size()>0){
+                WorkOrderManageByAlarmDto orderManageByAlarmDto = workOrders.get(0);
+                String taskDesc = orderManageByAlarmDto.getTaskDesc();
+                //标记为历史数据 并 修改工单描述
+                for(AlarmDetailsDto alarmDetailsDto : alarmDetailsDtos){
+                    alarmDetailsDto.setState(0);
+                    alarmDetailsDto.setAlarmEndTime(new Date());
+                    alarmDetailsDto.setDateUpdate(new Date());
+                    alarmDetailsDto.setUpdateBy(updateBy);
+                    alarmDetailMapper.update(alarmDetailsDto);
+
+                    taskDesc = taskDesc.replace(";"+alarmDetailsDto.getAlarmContent(),"")
+                            .replace(alarmDetailsDto.getAlarmContent(),"");
+                }
+                orderManageByAlarmDto.setTaskDesc(taskDesc);
+                if(orderManageByAlarmDto != null
+                        && (orderManageByAlarmDto.getOrderStatus() == null || orderManageByAlarmDto.getOrderStatus() == 0)
+                        && StringUtils.isBlank(taskDesc)){
+                    //工单未派单且无报警信息,删除工单
+                    operationManagerClient.batchDeleteByAlarms(new ArrayList<>(deviceIds));
+                }else{
+                    //其他情况修改描述
+                    operationManagerClient.updateByAlarms(workOrders);
+                }
+            }
+        }
+//        return alarmSettingMapper.updateRealtimeAlarm(Arrays.asList(ids),updateBy);
     }
 }

+ 4 - 18
sms_water/src/main/java/com/huaxu/service/impl/AlarmDetailsServiceImpl.java

@@ -178,7 +178,7 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
         //根据设置筛选出离线设备
         List<DeviceCheckAlarmDto>  alarmlist = deviceCheckAlarmDtos.stream().filter(deviceCheckAlarmDto -> deviceCheckAlarmDto.checkdeviceOffLine()).collect(Collectors.toList());
         //系统中已存在的离线报警
-        List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(null,"状态报警");
+        List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(null,"状态报警",null);
         //已存在的报警信息转为map方便匹配
         Map<Integer,AlarmDetailsDto> alarmDetailsDtoMap = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getAlarmSettingId, a -> a,(k1, k2)->k1));
         //需要新增的
@@ -288,13 +288,12 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
                         alarmDetailsDto.setAlarmEndTime(new Date());
                         alarmDetailsDto.setState(0);
                         alarmDetailMapper.update(alarmDetailsDto);//直接更新
-
                         taskDesc = taskDesc.replace(";" + alarmDetailsDto.getAlarmContent(), "")
                                 .replace(alarmDetailsDto.getAlarmContent(), "");
                     }
-
-                    if (orderManageByAlarmDto != null && orderManageByAlarmDto.getOrderStatus() == 0
-                            && com.huaxu.common.StringUtils.isBlank(taskDesc)) {
+                    if (orderManageByAlarmDto != null
+                            && (orderManageByAlarmDto.getOrderStatus() == null || orderManageByAlarmDto.getOrderStatus() == 0)
+                            && StringUtils.isBlank(taskDesc)) {
                         //工单未派单且无报警信息,删除工单
                         orderDelete.add(orderManageByAlarmDto.getDeviceId());
                     } else {
@@ -303,7 +302,6 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
                         orderUpdate.add(orderManageByAlarmDto);
                     }
                 }
-
                 //批量处理工单
                 if(orderDelete.size()>0){
                     operationManagerClient.batchDeleteByAlarms(orderDelete);
@@ -314,18 +312,6 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
 
             }
         }
-
-
-
-        //报警恢复的删除工单
-//        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()
-//                .map(a -> a.getDeviceId().longValue())
-//                .collect(Collectors.toSet());
-//        if(deviceIds.size()>0){
-//            operationManagerClient.batchDeleteByAlarms(new ArrayList<>(deviceIds));
-//        }
     }
 
    public void saveWorkOrderManageInfo(){

+ 7 - 0
sms_water/src/main/resources/mapper/AlarmDetailMapper.xml

@@ -658,6 +658,13 @@
         <if test="deviceId != null">
             and DEVICE_ID=#{deviceId}
         </if>
+        <if test="alarmSettingIds != null and alarmSettingIds.size() > 0">
+            and alarm_setting_id IN
+            <foreach collection="alarmSettingIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+
 
 
     </select>