Explorar el Código

Merge remote-tracking branch 'origin/master'

ys321973351 hace 1 año
padre
commit
4e3e71a5cd

+ 43 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/flowpath/service/impl/ItdmRunFlowPathServiceImpl.java

@@ -11,14 +11,22 @@ import org.jeecg.modules.flowpath.entity.ItdmFlowPathStep;
 import org.jeecg.modules.flowpath.entity.ItdmRunFlowPath;
 import org.jeecg.modules.flowpath.entity.ItdmRunFlowPathStep;
 import org.jeecg.modules.flowpath.mapper.*;
+import org.jeecg.modules.flowpath.service.IItdmFlowPathStepService;
 import org.jeecg.modules.flowpath.service.IItdmRunFlowPathService;
+import org.jeecg.modules.itdmFirstPage.entity.ItdmTask;
+import org.jeecg.modules.itdmFirstPage.service.IItdmTaskService;
+import org.jeecg.modules.system.service.ISysRoleService;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.jeecg.modules.weituo.service.IItdmWeituoInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -49,6 +57,22 @@ public class ItdmRunFlowPathServiceImpl extends ServiceImpl<ItdmRunFlowPathMappe
     @Autowired
     private ItdmFZRunFlowPathLogService logService;
 
+    @Autowired
+    @SuppressWarnings("all")
+    private IItdmTaskService taskService;
+    @Autowired
+    @SuppressWarnings("all")
+    private ISysRoleService roleService;
+    @Autowired
+    @SuppressWarnings("all")
+    private ISysUserService userService;
+    @Autowired
+    @SuppressWarnings("all")
+    private IItdmWeituoInfoService weituoInfoService;
+    @Autowired
+    @SuppressWarnings("all")
+    private IItdmFlowPathStepService flowPathStepService;
+
 
 
     @Override
@@ -89,6 +113,25 @@ public class ItdmRunFlowPathServiceImpl extends ServiceImpl<ItdmRunFlowPathMappe
         itdmRunFlowPath.setStatus("0");
         itdmRunFlowPathMapper.insert(itdmRunFlowPath);
 
+        //新增运行流程后,新增一条我的审批
+        ItdmTask itdmTask = new ItdmTask();
+        if(list.get(0).getRoleId()!=null){
+            String role = roleService.getById(list.get(0).getRoleId()).getRoleName();
+            itdmTask.setTaskRole(role);//待办角色
+        }
+        if(list.get(0).getUserIds()!=null){
+            String userName = userService.getUserByName(list.get(0).getUserIds()).getRealname();
+            itdmTask.setTaskUser(userName);//待办人员
+        }
+        Map<String, Object> weituoMap = new HashMap<>();
+        weituoMap.put("weituo_no",itdmCreateRunFlowPath.getWeituoNo());
+        String weituoId = weituoInfoService.listByMap(weituoMap).get(0).getId();
+        itdmTask.setWeituoId(weituoId);//委托id
+        String taskContent = flowPathStepService.getById(list.get(0).getId()).getName();
+        itdmTask.setTaskContent(taskContent);//当前步骤名
+        itdmTask.setTaskStatus(0);//待办
+        taskService.insertTaskAfterJudge(itdmTask);
+
 
         for (int i = 0; i < list.size(); i++) {
             ItdmFlowPathStep itdmFlowPathStep = list.get(i);

+ 1 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmDeviceRun/entity/ItdmDeviceRun.java

@@ -33,6 +33,7 @@ public class ItdmDeviceRun implements Serializable {
     private static final long serialVersionUID = 1L;
 
 	/**主键*/
+    @TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "主键")
     private java.lang.Integer id;
 	/**所属部门*/

+ 1 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmFirstPage/service/IItdmTaskService.java

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IItdmTaskService extends IService<ItdmTask> {
 
+    /**先根据待办人员、角色、任务判断是否已存在该任务,不存在再新增*/
     public boolean insertTaskAfterJudge(ItdmTask task);
 
 }

+ 1 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/itdmFirstPage/service/impl/ItdmTaskServiceImpl.java

@@ -24,6 +24,7 @@ public class ItdmTaskServiceImpl extends ServiceImpl<ItdmTaskMapper, ItdmTask> i
     @SuppressWarnings("all")
     private ItdmTaskMapper taskMapper;
 
+    /**先根据待办人员、角色、任务判断是否已存在该任务,不存在再新增*/
     public boolean insertTaskAfterJudge(ItdmTask task) {
         if(task.getTaskUser()!=null){
             ItdmTask queryTask = new ItdmTask();

+ 14 - 0
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/largeScreen/convert/ItdmDeviceConvert.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.largeScreen.convert;
 
 
 import org.jeecg.modules.itdmDevice.entity.ItdmDevice;
+import org.jeecg.modules.itdmDeviceRun.entity.ItdmDeviceRun;
 import org.jeecg.modules.largeScreen.vo.ItdmDeviceRepairAlarmListVO;
 import org.jeecg.modules.largeScreen.vo.ItdmDeviceWSVO;
 import org.mapstruct.Mapper;
@@ -10,6 +11,7 @@ import org.mapstruct.ReportingPolicy;
 import org.springframework.util.CollectionUtils;
 import org.mapstruct.factory.Mappers;
 
+import java.util.Date;
 import java.util.stream.Collectors;
 
 @Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE,imports ={ CollectionUtils.class, Collectors.class})
@@ -23,4 +25,16 @@ public interface ItdmDeviceConvert {
     @Mapping(target = "day",source = "day")
     ItdmDeviceRepairAlarmListVO toList(ItdmDevice itdmDevice,Integer day);
 
+    @Mapping(target = "deviceId",source = "deviceId")
+    @Mapping(target = "deviceName",source = "deviceName")
+    @Mapping(target = "deviceType",source = "deviceType")
+    @Mapping(target = "timeBegin",source = "runStartTime")
+    @Mapping(target = "timeEnd",source = "now")
+    @Mapping(target = "timeDay",source = "d")
+    @Mapping(target = "timeHour",source = "h")
+    @Mapping(target = "timeMinute",source = "m")
+    @Mapping(target = "timeSecond",source = "s")
+    @Mapping(target = "timeRun",source = "timeRun")
+    ItdmDeviceRun toItdmDeviceRun(String deviceId, String deviceName, String deviceType, Date runStartTime, Date now, Integer d, Integer h, Integer m, Integer s, String timeRun);
+
 }

+ 96 - 15
itdmServer/module-iTDM/src/main/java/org/jeecg/modules/largeScreen/task/DemoTask2.java

@@ -7,6 +7,8 @@ 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.WebSocketServer2;
@@ -43,6 +45,8 @@ public class DemoTask2 {
     private IItdmEnvironmentWaterNowService waterNowService;
     @Autowired
     private IItdmEnvironmentYeweiNowService yeweiNowService;
+    @Autowired
+    private IItdmDeviceRunService deviceRunService;
 
     static List<Map<String,Object>> list = new ArrayList<>();//总的
 
@@ -55,6 +59,79 @@ public class DemoTask2 {
         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-> {
@@ -68,21 +145,25 @@ public class DemoTask2 {
 
         /**力学设备实时数据*/
         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","力学设备试验数据");

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

@@ -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","力学设备试验数据");