Browse Source

大屏设备启动报警由只报一次警改为需手动删除

LLL 1 year ago
parent
commit
c51697be92

+ 216 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/largeScreen/task/DemoTask3.java

@@ -0,0 +1,216 @@
+package org.jeecg.modules.largeScreen.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.tomcat.websocket.WsSession;
+import org.jeecg.modules.itdmDataNow.entity.*;
+import org.jeecg.modules.itdmDataNow.service.*;
+import org.jeecg.modules.itdmDevice.entity.ItdmDevice;
+import org.jeecg.modules.itdmDevice.service.IItdmDeviceService;
+import org.jeecg.modules.itdmDeviceStart.entity.ItdmDeviceStart;
+import org.jeecg.modules.itdmDeviceStart.service.IItdmDeviceStartService;
+import org.jeecg.modules.largeScreen.component.WebSocketServer3;
+import org.jeecg.modules.largeScreen.convert.*;
+import org.jeecg.modules.largeScreen.entity.ItdmLixueNow;
+import org.jeecg.modules.largeScreen.vo.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Component("demoTask3")
+@SuppressWarnings("all")
+public class DemoTask3 {
+
+    @Autowired
+    private WebSocketServer3 webSocketServer;
+    @Autowired
+    private IItdmWenxiangNowService wenxiangNowService;
+    @Autowired
+    private IItdmDeviceService deviceService;
+    @Autowired
+    private IItdmAlarmNowService alarmNowService;
+    @Autowired
+    private IItdmDeviceStartService deviceStartService;
+    @Autowired
+    private IItdmWenxiangVoltageNowService voltageNowService;
+    @Autowired
+    private IItdmEnvironmentQuyuNowService quyuNowService;
+    @Autowired
+    private IItdmEnvironmentWaterNowService waterNowService;
+    @Autowired
+    private IItdmEnvironmentYeweiNowService yeweiNowService;
+
+    static List<Map<String,Object>> list = new ArrayList<>();//总的
+
+    /**
+     * 数据初始化List<Map<String,Object>
+     * */
+    public List<Map<String,Object>> chushihua(){
+
+        list= new ArrayList<>();//清空原来的数据
+        Map<String, Object> columnMap = new HashMap<>();//用于列表搜索
+        HashMap<String,Object> map = new HashMap<String, Object>();//用于返回的结果
+
+        /**温箱实时数据*/
+        List<ItdmWenxiangNow> wenxiangNowList = wenxiangNowService.list();
+        List<ItdmWenxiangNowWSVO> wenxiangVOList = wenxiangNowList.stream().map(i-> {
+            return ItdmWenxiangNowConvert.INSTANCE.convert(i);
+        }).collect(Collectors.toList());
+
+        map = new HashMap<String, Object>();
+        map.put("data",wenxiangVOList);
+        map.put("name","温箱试验数据");
+        list.add(map);
+
+        /**力学设备实时数据*/
+        List<ItdmLixueNow> lixueVOList= new ArrayList<>();
+        for(int i=1; i<=6; i++){
+            Random random1 = new Random();//随机数
+            int current = random1.nextInt(20)+100;//电流
+            int voltage = random1.nextInt(30)+70;//电压
+            int waterTemperature = random1.nextInt(100);//水温
+            int waterPressure = random1.nextInt(100);//水压
+
+            ItdmLixueNow liXue = new ItdmLixueNow();
+            liXue.setDeviceName("力学设备"+i);
+            liXue.setCurrent(BigDecimal.valueOf(current));
+            liXue.setVoltage(BigDecimal.valueOf(voltage));
+            liXue.setWaterTemperature(BigDecimal.valueOf(waterTemperature));
+            liXue.setWaterPressure(BigDecimal.valueOf(waterPressure));
+            lixueVOList.add(liXue);
+        }
+        map = new HashMap<String, Object>();
+        map.put("data",lixueVOList);
+        map.put("name","力学设备试验数据");
+        list.add(map);
+
+
+        /**设备运行状况2
+         * 0 待机
+         * 1 运行中
+         * 2 报警
+         * 3 故障——故障状态中,不根据硬件传过来的设备状态而修改故障状态
+         * 4 解除故障
+         * */
+        List<ItdmDevice> deviceList = deviceService.queryList();
+        List<ItdmDeviceWSVO> deviceWSVOList = deviceList.stream().map(i->{
+            return ItdmDeviceConvert.INSTANCE.convert(i);
+        }).collect(Collectors.toList());
+        map = new HashMap<String, Object>();
+        map.put("data",deviceWSVOList);
+        map.put("name","设备运行状况");
+        list.add(map);
+
+        /**报警3——实时报警*/
+        columnMap = new HashMap<>();
+        columnMap.put("data_status",1);//数据状态,0正常1报警
+        columnMap.put("voice_status",1);//是否语音播报,0关闭1开启
+        List<ItdmAlarmNow> alarmNowList = alarmNowService.listByMap(columnMap);
+        List<ItdmAlarmNowWSVO> alarmNowWSVOList = alarmNowList.stream().map(i->{
+            Integer alarmType = 1; //数据类型(1数据报警 2通电变温预警 3设备启动报警)
+            String alarmMessage = i.getDeviceName()+i.getValueType()+"异常";
+            return ItdmAlarmNowConvert.INSTANCE.convert(i,alarmType,alarmMessage);
+        }).collect(Collectors.toList());
+        /**设备启动报警*/
+        ItdmDeviceStart deviceStart = new ItdmDeviceStart();
+        deviceStart.setDataStatus(0);
+        QueryWrapper<ItdmDeviceStart> queryWrapper = new QueryWrapper<>(deviceStart);
+        queryWrapper.orderByAsc("start_time");
+        List<ItdmDeviceStart> deviceStartList = deviceStartService.list(queryWrapper);
+        List<ItdmAlarmNowWSVO> deviceStartWSVOList = deviceStartList.stream().map(i->{
+            Integer alarmType = 3; //数据类型(1数据报警 2通电变温预警 3设备启动报警)
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String alarmMessage = i.getDeviceName()+sdf.format(i.getStartTime())+"已启动";
+            return ItdmDeviceStartConvert.INSTANCE.convert(i,alarmType,alarmMessage);
+        }).collect(Collectors.toList());
+
+        alarmNowWSVOList.addAll(deviceStartWSVOList);
+
+        map = new HashMap<String, Object>();
+        map.put("data",alarmNowWSVOList);
+        map.put("name","报警列表");
+        list.add(map);
+
+//        /**已展示的数据状态更新*/
+//        for (ItdmDeviceStart start : deviceStartList){
+//            start.setDataStatus(1);
+//            deviceStartService.updateById(start);
+//        }
+
+        /**语音列表*/
+        List<ItdmVoiceWSVO> voiceWSVOList = alarmNowWSVOList.stream().map(i->{
+            return ItdmVoiceConvert.INSTANCE.convert(i);
+        }).collect(Collectors.toList());
+
+        map = new HashMap<String, Object>();
+        map.put("data",voiceWSVOList);
+        map.put("name","语音列表");
+        list.add(map);
+
+        /**温箱通用数据1(a线电压 b线电压 c线电压 进出水口温度、水压,水箱液位)*/
+        ItdmWenxiangVoltageNow voltageNow = voltageNowService.getById(1);
+        ItdmEnvironmentWaterNow inWaterNow = waterNowService.getById(1);//进水口
+        ItdmEnvironmentWaterNow outWaterNow = waterNowService.getById(2);//出水口
+        ItdmEnvironmentYeweiNow yeweiNow = yeweiNowService.getById(1);
+        TongyongDataVO tongyongDataVO = TongyongDataVOConvert.INSTANCE.convert(voltageNow,inWaterNow,outWaterNow,yeweiNow);
+
+        map = new HashMap<String, Object>();
+        map.put("data",tongyongDataVO);
+        map.put("name","通用数据1");
+        list.add(map);
+
+        /**温箱通用数据2(温箱、力学、霉菌区域的温度、湿度、气压)*/
+        List<ItdmEnvironmentQuyuNow> quyuNowList = quyuNowService.list();
+        map = new HashMap<String, Object>();
+        map.put("data",quyuNowList);
+        map.put("name","通用数据2");
+        list.add(map);
+
+        /**设备维护预警列表*/
+        ItdmDevice device = new ItdmDevice();
+        device.setIsRepair(0);//0未维护
+
+        QueryWrapper<ItdmDevice> wrapper  = new QueryWrapper<>(device);
+        wrapper.isNotNull("repair_time");
+        //维护时间小于等于当前时间+15天
+        Date afterNow15 = new Date(new Date().getTime() + 15*1000*3600*24);
+        wrapper.le("repair_time",afterNow15);
+        wrapper.orderByAsc("repair_time");
+        List<ItdmDevice> deviceList1 = deviceService.list(wrapper);
+
+        List<ItdmDeviceRepairAlarmListVO>  repairAlarmListVOList = deviceList1.stream().map(i->{
+            Date star = new Date();
+            Long starTime=star.getTime();
+            Long endTime=i.getRepairTime().getTime();
+            Long num=endTime-starTime;//时间戳相差的毫秒数
+            Integer day = Math.toIntExact(num / (24 * 60 * 60 * 1000));
+            return ItdmDeviceConvert.INSTANCE.toList(i,day);
+        }).collect(Collectors.toList());
+
+        map = new HashMap<String, Object>();
+        map.put("data",repairAlarmListVOList);
+        map.put("name","设备维护预警");
+        list.add(map);
+
+        return list;
+    }
+
+
+
+    //首页和小航连接成功发送数据
+    public void taskWithParamsList(WsSession session) {
+        System.out.println("首页和小航连接成功发送数据");
+        webSocketServer.sendUser(this.chushihua(), session);
+    }
+
+
+
+
+
+
+
+}
+