|
@@ -1,11 +1,15 @@
|
|
|
package org.jeecg.modules.largeScreen.task;
|
|
|
|
|
|
+import cn.hutool.core.date.DateUnit;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
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.itdmDeviceRun.entity.ItdmDeviceRun;
|
|
|
+import org.jeecg.modules.itdmDeviceRun.service.IItdmDeviceRunService;
|
|
|
import org.jeecg.modules.itdmDeviceStart.entity.ItdmDeviceStart;
|
|
|
import org.jeecg.modules.itdmDeviceStart.service.IItdmDeviceStartService;
|
|
|
import org.jeecg.modules.largeScreen.component.WebSocketServer3;
|
|
@@ -42,6 +46,8 @@ public class DemoTask3 {
|
|
|
private IItdmEnvironmentWaterNowService waterNowService;
|
|
|
@Autowired
|
|
|
private IItdmEnvironmentYeweiNowService yeweiNowService;
|
|
|
+ @Autowired
|
|
|
+ private IItdmDeviceRunService deviceRunService;
|
|
|
|
|
|
static List<Map<String,Object>> list = new ArrayList<>();//总的
|
|
|
|
|
@@ -54,6 +60,78 @@ public class DemoTask3 {
|
|
|
Map<String, Object> columnMap = new HashMap<>();//用于列表搜索
|
|
|
HashMap<String,Object> map = new HashMap<String, Object>();//用于返回的结果
|
|
|
|
|
|
+
|
|
|
+ /**检查设备表设备状态及更新时间,如果设备非“未运行状态”,修改实时数据和设备实时状态*/
|
|
|
+ Map<String, Object> deviceMap1 = new HashMap<>();
|
|
|
+ deviceMap1.put("iz_display",1);
|
|
|
+ List<ItdmDevice> deviceDisplayList = deviceService.listByMap(deviceMap1);
|
|
|
+ Date now = new Date();
|
|
|
+
|
|
|
+ //检查温箱通用电压实时表的更新时间
|
|
|
+ ItdmWenxiangVoltageNow wenxiangVoltageNow = voltageNowService.getById(1);
|
|
|
+ Date vDate = wenxiangVoltageNow.getCreateTime();
|
|
|
+ if(now.getTime()-vDate.getTime()>180000 ){
|
|
|
+ wenxiangVoltageNow.setVoltageA(BigDecimal.valueOf(0));
|
|
|
+ wenxiangVoltageNow.setVoltageB(BigDecimal.valueOf(0));
|
|
|
+ wenxiangVoltageNow.setVoltageC(BigDecimal.valueOf(0));
|
|
|
+ wenxiangVoltageNow.setCreateTime(now);
|
|
|
+ voltageNowService.updateById(wenxiangVoltageNow);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (ItdmDevice device:deviceDisplayList){
|
|
|
+ if(device.getUpdateTime()!=null){
|
|
|
+ Date date1 = device.getUpdateTime();
|
|
|
+ //时间相差3分钟且原来设备运行标识为1(设备已开始运行),设备可能由于断电或者断网没有数据传过来,修改该设备状态为“未运行”
|
|
|
+ //设备结束运行需要新增一条设备运行记录
|
|
|
+ //修改实时数据表对应该设备数据为0
|
|
|
+ if(now.getTime()-date1.getTime()>180000 && device.getBiaoshi()==1){
|
|
|
+ Long x = (now.getTime() - date1.getTime()); //计算更新时间与当前时间相差时间(毫秒)
|
|
|
+
|
|
|
+ Integer d = Math.toIntExact(x / (24* 60* 60* 1000)); //天
|
|
|
+ Integer h = Math.toIntExact(x / (60 * 60 * 1000) - d * 24); //小时
|
|
|
+ Integer m = Math.toIntExact((x / (60 * 1000)) - d * 24 * 60 - h * 60);//分钟
|
|
|
+ Integer s = Math.toIntExact(x/1000 - d * 24 * 60 * 60 - h * 60 * 60 - m * 60);//秒
|
|
|
+
|
|
|
+ String timeRun = d+"天"+h+"小时"+m +"分钟"+ s+ "秒";
|
|
|
+ ItdmDeviceRun run = ItdmDeviceConvert.INSTANCE.toItdmDeviceRun(
|
|
|
+ device.getId(),device.getDeviceName(),device.getDeviceType(),
|
|
|
+ date1, now, d, h, m, s, timeRun);
|
|
|
+ deviceRunService.save(run);
|
|
|
+
|
|
|
+ //修改设备相关信息
|
|
|
+ device.setDeviceStatus(0); //设备状态(待机0,运行中1,报警2,故障3,非故障4)
|
|
|
+ device.setBiaoshi(0); //设备运行标识(0设备已结束运行1设备已开始运行)
|
|
|
+ device.setRunStartTime(null); //设备开始运行时间改为空
|
|
|
+ deviceService.updateById(device);
|
|
|
+
|
|
|
+ //修改温箱实时数据表
|
|
|
+ ItdmWenxiangNow queryWenxiangNow = new ItdmWenxiangNow();
|
|
|
+ queryWenxiangNow.setDeviceId(device.getId());
|
|
|
+ QueryWrapper<ItdmWenxiangNow> queryWrapper = new QueryWrapper<>(queryWenxiangNow);
|
|
|
+ ItdmWenxiangNow wenxiangNow = wenxiangNowService.getOne(queryWrapper);
|
|
|
+ wenxiangNow.setCreateTime(now);
|
|
|
+ wenxiangNow.setTemperature(BigDecimal.valueOf(0));
|
|
|
+ wenxiangNow.setHumidity(BigDecimal.valueOf(0));
|
|
|
+ wenxiangNow.setCurrentA(BigDecimal.valueOf(0));
|
|
|
+ wenxiangNow.setCurrentB(BigDecimal.valueOf(0));
|
|
|
+ wenxiangNow.setCurrentC(BigDecimal.valueOf(0));
|
|
|
+ wenxiangNowService.updateById(wenxiangNow);
|
|
|
+
|
|
|
+ //修改实时报警表状态——改为正常(暂定)
|
|
|
+ Map<String, Object> alarmNowMap = new HashMap<>();
|
|
|
+ alarmNowMap.put("device_id",device.getId());
|
|
|
+ alarmNowMap.put("data_status",1);//数据状态——报警
|
|
|
+ List<ItdmAlarmNow> alarmNowList = alarmNowService.listByMap(alarmNowMap);
|
|
|
+ for (ItdmAlarmNow alarmNow :alarmNowList){
|
|
|
+ alarmNow.setDataStatus(0);//数据状态——正常
|
|
|
+ alarmNow.setCreateTime(now);
|
|
|
+ alarmNowService.updateById(alarmNow);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**温箱实时数据*/
|
|
|
List<ItdmWenxiangNow> wenxiangNowList = wenxiangNowService.list();
|
|
|
List<ItdmWenxiangNowWSVO> wenxiangVOList = wenxiangNowList.stream().map(i-> {
|
|
@@ -67,21 +145,25 @@ public class DemoTask3 {
|
|
|
|
|
|
/**力学设备实时数据*/
|
|
|
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);
|
|
|
- }
|
|
|
+// 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);//水压
|
|
|
+// int current = 0;//电流
|
|
|
+// int voltage = 0;//电压
|
|
|
+// int waterTemperature = 0;//水温
|
|
|
+// int waterPressure = 0;//水压
|
|
|
+//
|
|
|
+// 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","力学设备试验数据");
|