فهرست منبع

报警信息导出修改

wangli 4 سال پیش
والد
کامیت
695e4be640

+ 1 - 1
sms_water/src/main/java/com/huaxu/common/EasyExcelUtil.java

@@ -56,7 +56,7 @@ public  class EasyExcelUtil {
     public static String excelWrite(String path,Class t, String excelName,List data) {
         String filePath = "";
         String fileName = DateFormatUtils.format(new Date(), "yyyy/MM/dd") + File.separator;
-        fileName = fileName + excelName + System.currentTimeMillis() + ".xlsx";
+        fileName = fileName + excelName +"-"+ DateFormatUtils.format(new Date(), "yyyyMMddHHmmss")  + ".xlsx";
         try {
             getAbsoluteFile(path, fileName);
             EasyExcel.write(path + fileName, t)

+ 11 - 0
sms_water/src/main/java/com/huaxu/controller/AlarmDetailsController.java

@@ -192,10 +192,15 @@ public class AlarmDetailsController {
             @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
             @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
             @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId,
+            @ApiParam(value = "所属场景id") @RequestParam(required = false)  List<Integer> ids,
             @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
             @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime
 
     ){
+        if(ids != null && ids.size()>0){
+            String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsRealTimeDto.class, "历史报警记录",alarmDetailsService.selectByIds(ids) );
+            return new AjaxMessage<>(ResultStatus.OK, filePath);
+        }
         AlarmDetailsDto alarmDetailsDto = new AlarmDetailsDto();
         alarmDetailsDto.setCondition(condition);
         alarmDetailsDto.setAlarmType(alarmType);
@@ -283,9 +288,15 @@ public class AlarmDetailsController {
             @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
             @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
             @ApiParam(value = "所属场景id") @RequestParam(required = false)  Integer sceneId,
+            @ApiParam(value = "所属场景id") @RequestParam(required = false)  List<Integer> ids,
             @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
             @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime
     ){
+
+        if(ids != null && ids.size()>0){
+            String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsRealTimeDto.class, "实时报警记录",alarmDetailsService.selectByIds(ids) );
+            return new AjaxMessage<>(ResultStatus.OK, filePath);
+        }
         AlarmDetailsDto alarmDetailsDto = new AlarmDetailsDto();
         alarmDetailsDto.setCondition(condition);
         alarmDetailsDto.setAlarmType(alarmType);

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

@@ -25,6 +25,11 @@ public interface AlarmDetailMapper {
      */
     AlarmDetailsDto selectById(Integer id);
 
+    /**
+     * 查询设备报警
+     * @return
+     */
+    List<AlarmDetailsDto> selectByIds( @Param("ids") List<Integer> ids);
     /**
      * 添加设备报警
      * @return
@@ -114,4 +119,7 @@ public interface AlarmDetailMapper {
      */
     List<AlarmDetailsDto> selectStateAlarm(@Param("deviceId") Integer deviceId, @Param("alarmType") String alarmType);
 
+
+    Integer udpateLastUpdateTime(@Param("deviceCode") String deviceCode, @Param("lastUpdateTime") Date lastUpdateTime);
+
 }

+ 69 - 67
sms_water/src/main/java/com/huaxu/rabbitmq/ReceiveData.java

@@ -84,77 +84,79 @@ public class ReceiveData {
                 return;
             }
 
-                String devcieCode =jsonObject .getString("unitIdentifier");
-                JSONObject receiveData =JSONObject.parseObject(jsonObject .getString("parsedData"));
-
-                if(StringUtils.isNotBlank(devcieCode)){
-                   //获取需要验证的报警条件
-
-                    List<DeviceCheckAlarmDto> deviceCheckAlarmDtos = alarmDetailMapper.selectDeviceForCheckAlarm(devcieCode,"参数报警");
-                   //有设置报警参数
-                   if(deviceCheckAlarmDtos.size()>0 && StringUtils.isNotBlank(deviceCheckAlarmDtos.get(0).getIdentifiter())){
-                       Integer deviceId= deviceCheckAlarmDtos.get(0).getDeviceId();
-                       //系统中已存在的报警信息
-                       List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(deviceId,"参数报警");
-                       //已存在的报警信息转为map方便匹配
-                       Map<String,AlarmDetailsDto> alarmDetailsDtoMap = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getMapKey, a -> a,(k1, k2)->k1));
-
-                       List<AlarmDetailsEntity> insert =new ArrayList<>();
-                       List<AlarmDetailsDto> update =new ArrayList<>();
-                       List<AlarmDetailsDto> delete =new ArrayList<>();
-
-                       //校验各参数异常情况
-                       for(DeviceCheckAlarmDto deviceCheckAlarmDto:deviceCheckAlarmDtos){
-                           //获取参数接收值
-                           String receivedValue = receiveData.getString(deviceCheckAlarmDto.getIdentifiter());
-                           if(deviceCheckAlarmDto.checkdeviceAttributeAlarm(receivedValue)){
-                              //判断报警是否已存在
-                               if(alarmDetailsDtoMap.containsKey(deviceCheckAlarmDto.getDeviceId()+"_"+deviceCheckAlarmDto.getAttributeId())){
-                                   AlarmDetailsDto alarmDetailsDto = alarmDetailsDtoMap.get(deviceCheckAlarmDto.getDeviceId()+"_"+deviceCheckAlarmDto.getAttributeId());
-                                   alarmDetailsDto.setAlarmValue(Double.valueOf(receivedValue));
-                                   alarmDetailsDto.setAlarmContent(deviceCheckAlarmDto.getAlarminfo(receivedValue));
-                                   alarmDetailsDto.setMinValue(alarmDetailsDto.getMinValue()<Double.valueOf(receivedValue)?alarmDetailsDto.getMinValue():Double.valueOf(receivedValue));
-                                   alarmDetailsDto.setMaxValue(alarmDetailsDto.getMaxValue()>Double.valueOf(receivedValue)?alarmDetailsDto.getMaxValue():Double.valueOf(receivedValue));
+            String devcieCode =jsonObject .getString("unitIdentifier");
+            JSONObject receiveData =JSONObject.parseObject(jsonObject .getString("parsedData"));
+            //修改设备上报时间
+            alarmDetailMapper.udpateLastUpdateTime(devcieCode,receiveDateTime);
+
+            if(StringUtils.isNotBlank(devcieCode)){
+               //获取需要验证的报警条件
+
+                List<DeviceCheckAlarmDto> deviceCheckAlarmDtos = alarmDetailMapper.selectDeviceForCheckAlarm(devcieCode,"参数报警");
+               //有设置报警参数
+               if(deviceCheckAlarmDtos.size()>0 && StringUtils.isNotBlank(deviceCheckAlarmDtos.get(0).getIdentifiter())){
+                   Integer deviceId= deviceCheckAlarmDtos.get(0).getDeviceId();
+                   //系统中已存在的报警信息
+                   List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(deviceId,"参数报警");
+                   //已存在的报警信息转为map方便匹配
+                   Map<String,AlarmDetailsDto> alarmDetailsDtoMap = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getMapKey, a -> a,(k1, k2)->k1));
+
+                   List<AlarmDetailsEntity> insert =new ArrayList<>();
+                   List<AlarmDetailsDto> update =new ArrayList<>();
+                   List<AlarmDetailsDto> delete =new ArrayList<>();
+
+                   //校验各参数异常情况
+                   for(DeviceCheckAlarmDto deviceCheckAlarmDto:deviceCheckAlarmDtos){
+                       //获取参数接收值
+                       String receivedValue = receiveData.getString(deviceCheckAlarmDto.getIdentifiter());
+                       if(deviceCheckAlarmDto.checkdeviceAttributeAlarm(receivedValue)){
+                          //判断报警是否已存在
+                           if(alarmDetailsDtoMap.containsKey(deviceCheckAlarmDto.getDeviceId()+"_"+deviceCheckAlarmDto.getAttributeId())){
+                               AlarmDetailsDto alarmDetailsDto = alarmDetailsDtoMap.get(deviceCheckAlarmDto.getDeviceId()+"_"+deviceCheckAlarmDto.getAttributeId());
+                               alarmDetailsDto.setAlarmValue(Double.valueOf(receivedValue));
+                               alarmDetailsDto.setAlarmContent(deviceCheckAlarmDto.getAlarminfo(receivedValue));
+                               alarmDetailsDto.setMinValue(alarmDetailsDto.getMinValue()<Double.valueOf(receivedValue)?alarmDetailsDto.getMinValue():Double.valueOf(receivedValue));
+                               alarmDetailsDto.setMaxValue(alarmDetailsDto.getMaxValue()>Double.valueOf(receivedValue)?alarmDetailsDto.getMaxValue():Double.valueOf(receivedValue));
 //                                   update.add(alarmDetailsDto);
-                                   alarmDetailMapper.update(alarmDetailsDto);
-                                   //已存在的修改后从集合移除
-                                   alarmDetailsDtoMap.remove(deviceCheckAlarmDto.getDeviceId()+"_"+deviceCheckAlarmDto.getAttributeId());
-                               }else{
-                                   AlarmDetailsEntity alarmDetailsEntity = new AlarmDetailsDto();
-                                   alarmDetailsEntity.setTenantId(deviceCheckAlarmDto.getTenantId());
-                                   alarmDetailsEntity.setDeviceId(deviceCheckAlarmDto.getDeviceId());
-                                   alarmDetailsEntity.setCompanyOrgId(deviceCheckAlarmDto.getCompanyOrgId());
-                                   alarmDetailsEntity.setDeptOrgId(deviceCheckAlarmDto.getDeptOrgId());
-                                   alarmDetailsEntity.setAlarmType(deviceCheckAlarmDto.getAlarmType());
-                                   alarmDetailsEntity.setAttributeId(deviceCheckAlarmDto.getAttributeId());
-                                   alarmDetailsEntity.setAlarmValue(Double.valueOf(receivedValue));
-                                   alarmDetailsEntity.setAlarmStartTime(receiveDateTime);
-                                   alarmDetailsEntity.setAlarmContent(deviceCheckAlarmDto.getAlarminfo(receivedValue));
-                                   alarmDetailsEntity.setState(1);
-                                   alarmDetailsEntity.setOpState(1);
-                                   alarmDetailsEntity.setMinValue(Double.valueOf(receivedValue));
-                                   alarmDetailsEntity.setMaxValue(Double.valueOf(receivedValue));
-                                   alarmDetailsEntity.setStatus(1);
-                                   alarmDetailsEntity.setDateCreate(new Date());
-                                   alarmDetailsEntity.setDateUpdate(new Date());
-                                   alarmDetailsEntity.setCreateBy("system");
-                                   alarmDetailsEntity.setUpdateBy("system");
-                                   insert.add(alarmDetailsEntity);
-                               }
-                           }
-                           //处理完成后,剩下的标记为历史数据
-                           for(AlarmDetailsDto alarmDetailsDto:alarmDetailsDtoMap.values()){
-                               alarmDetailsDto.setState(0);
-                               alarmDetailsDto.setAlarmEndTime(receiveDateTime);
                                alarmDetailMapper.update(alarmDetailsDto);
+                               //已存在的修改后从集合移除
+                               alarmDetailsDtoMap.remove(deviceCheckAlarmDto.getDeviceId()+"_"+deviceCheckAlarmDto.getAttributeId());
+                           }else{
+                               AlarmDetailsEntity alarmDetailsEntity = new AlarmDetailsDto();
+                               alarmDetailsEntity.setTenantId(deviceCheckAlarmDto.getTenantId());
+                               alarmDetailsEntity.setDeviceId(deviceCheckAlarmDto.getDeviceId());
+                               alarmDetailsEntity.setCompanyOrgId(deviceCheckAlarmDto.getCompanyOrgId());
+                               alarmDetailsEntity.setDeptOrgId(deviceCheckAlarmDto.getDeptOrgId());
+                               alarmDetailsEntity.setAlarmType(deviceCheckAlarmDto.getAlarmType());
+                               alarmDetailsEntity.setAttributeId(deviceCheckAlarmDto.getAttributeId());
+                               alarmDetailsEntity.setAlarmValue(Double.valueOf(receivedValue));
+                               alarmDetailsEntity.setAlarmStartTime(receiveDateTime);
+                               alarmDetailsEntity.setAlarmContent(deviceCheckAlarmDto.getAlarminfo(receivedValue));
+                               alarmDetailsEntity.setState(1);
+                               alarmDetailsEntity.setOpState(1);
+                               alarmDetailsEntity.setMinValue(Double.valueOf(receivedValue));
+                               alarmDetailsEntity.setMaxValue(Double.valueOf(receivedValue));
+                               alarmDetailsEntity.setStatus(1);
+                               alarmDetailsEntity.setDateCreate(new Date());
+                               alarmDetailsEntity.setDateUpdate(new Date());
+                               alarmDetailsEntity.setCreateBy("system");
+                               alarmDetailsEntity.setUpdateBy("system");
+                               insert.add(alarmDetailsEntity);
                            }
-                           //批量插入新增报警
-                           if(insert.size()>0){
-                            alarmDetailMapper.batchInsert(insert);
-                           }
-                        }
-                   }
+                       }
+                       //处理完成后,剩下的标记为历史数据
+                       for(AlarmDetailsDto alarmDetailsDto:alarmDetailsDtoMap.values()){
+                           alarmDetailsDto.setState(0);
+                           alarmDetailsDto.setAlarmEndTime(receiveDateTime);
+                           alarmDetailMapper.update(alarmDetailsDto);
+                       }
+                       //批量插入新增报警
+                       if(insert.size()>0){
+                        alarmDetailMapper.batchInsert(insert);
+                       }
+                    }
                }
+           }
         }
 
     }

+ 5 - 1
sms_water/src/main/java/com/huaxu/service/AlarmDetailsService.java

@@ -20,7 +20,11 @@ public interface AlarmDetailsService {
      * @return
      */
     AlarmDetailsDto selectById(Integer id);
-
+    /**
+     * 查询设备
+     * @return
+     */
+    List<AlarmDetailsDto> selectByIds(List<Integer> ids);
     /**
      * 添加设备
      * @return

+ 6 - 1
sms_water/src/main/java/com/huaxu/service/impl/AlarmDetailsServiceImpl.java

@@ -34,6 +34,11 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
         return alarmDetailMapper.selectById(id);
     }
 
+    @Override
+    public List<AlarmDetailsDto> selectByIds(List<Integer> ids) {
+        return alarmDetailMapper.selectByIds(ids);
+    }
+
     @Override
     public Integer insert(AlarmDetailsEntity alarmDetailsEntity) {
         return alarmDetailMapper.insert(alarmDetailsEntity);
@@ -174,7 +179,7 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
                 .map(d ->{
                     AlarmDetailsDto alarmDetailsDto = alarmDetailsDtoMap.get(d.getDeviceId());
                     alarmDetailsDto.setDateUpdate(new Date());
-                    alarmDetailsDto.setAlarmContent("离线时间"+d.getAlarmCondition() +d.getAlarmValue());
+                    alarmDetailsDto.setAlarmContent(d.getDeviceName()+"离线时间"+d.getAlarmCondition() +d.getAlarmValue()+"分钟");
                     alarmDetailsDto.setAlarmValue(d.getDuration());
                     alarmDetailMapper.update(alarmDetailsDto);//直接更新
                     alarmDetailsDtoMap.remove(d.getDeviceId());//更新完成后从集合中移除,只剩下未处理的

+ 21 - 6
sms_water/src/main/resources/mapper/AlarmDetailMapper.xml

@@ -96,6 +96,18 @@
             and a.id=#{id}
     </select>
 
+    <select id="selectByIds" resultType="com.huaxu.dto.AlarmDetailsDto">
+        select
+        <include refid="Base_Column_List"/>
+        from sms_alarm_details a
+        <include refid="alarmDetailJoins"/>
+        where a.`STATUS` = 1
+        and a.id in
+            <foreach collection="ids" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+    </select>
+
     <!--通过实体作为筛选条件查询-->
     <select id="selectList" resultType="com.huaxu.dto.AlarmDetailsDto">
         select
@@ -122,7 +134,7 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
-        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+        <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
             and d.SCENE_ID  in
             <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
                 #{item}
@@ -286,7 +298,7 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
-        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+        <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
             and d.SCENE_ID  in
             <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
                 #{item}
@@ -347,7 +359,7 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
-        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+        <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
             and d.SCENE_ID  in
             <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
                 #{item}
@@ -408,7 +420,7 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
-        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+        <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
             and d.SCENE_ID  in
             <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
                 #{item}
@@ -469,7 +481,7 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
-        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+        <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
             and d.SCENE_ID  in
             <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
                 #{item}
@@ -530,7 +542,7 @@
         <if test="alarmDetailsDto.endTime != null">
             and a.ALARM_START_TIME &lt;=DATE_ADD(#{alarmDetailsDto.endTime},INTERVAL 1 DAY)
         </if>
-        <if test="alarmDetailsDto.sceneIds != null and deviceDto.sceneIds.size() > 0">
+        <if test="alarmDetailsDto.sceneIds != null and alarmDetailsDto.sceneIds.size() > 0">
             and d.SCENE_ID  in
             <foreach collection="alarmDetailsDto.sceneIds" item="item" open="(" close=")" separator=",">
                 #{item}
@@ -619,4 +631,7 @@
 
     </select>
 
+    <update id="udpateLastUpdateTime">
+        update sms_device set LAST_UPDATE_TIME =#{lastUpdateTime} where DEVICE_CODE=#{deviceCode}
+    </update>
 </mapper>