Jelajahi Sumber

fix:延时任务和虚拟设备

xiwa 1 tahun lalu
induk
melakukan
a2dcfe4de5

+ 0 - 6
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/IJPACommData.java

@@ -33,16 +33,10 @@ public  interface IJPACommData< T extends Id<ID>, ID> extends ICommonData<T , ID
 
     Class getTClass();
 
-
-
-
-
     default T findById(ID id) {
         return (T) MapstructUtils.convert(getBaseRepository().findById(id).orElse(null), getTClass());
     }
 
-
-
     @Override
     default List<T> findByIds(Collection<ID> id) {
         List allById = getBaseRepository().findAllById(id);

+ 4 - 10
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/VirtualDeviceDataImpl.java

@@ -9,7 +9,6 @@
  */
 package cc.iotkit.data.service;
 
-import cc.iotkit.common.api.PageRequest;
 import cc.iotkit.data.dao.IJPACommData;
 import cc.iotkit.data.manager.IVirtualDeviceData;
 import cc.iotkit.data.dao.VirtualDeviceMappingRepository;
@@ -22,7 +21,6 @@ import cc.iotkit.model.device.VirtualDevice;
 import cn.hutool.core.util.IdUtil;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -30,7 +28,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -39,13 +36,10 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public class VirtualDeviceDataImpl implements IVirtualDeviceData, IJPACommData<VirtualDevice, String> {
 
-
     private final VirtualDeviceRepository virtualDeviceRepository;
 
-
     private final VirtualDeviceMappingRepository virtualDeviceMappingRepository;
 
-
     @Override
     public JpaRepository getBaseRepository() {
         return virtualDeviceRepository;
@@ -96,7 +90,7 @@ public class VirtualDeviceDataImpl implements IVirtualDeviceData, IJPACommData<V
 
     @Override
     public VirtualDevice findById(String s) {
-        VirtualDevice dto = MapstructUtils.convert(virtualDeviceRepository.findById(s).orElse(null),VirtualDevice.class);
+        VirtualDevice dto = MapstructUtils.convert(virtualDeviceRepository.findById(s).orElse(null), VirtualDevice.class);
         dto.setDevices(getVirtualDeviceIds(s));
         return dto;
     }
@@ -108,10 +102,11 @@ public class VirtualDeviceDataImpl implements IVirtualDeviceData, IJPACommData<V
     }
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public VirtualDevice save(VirtualDevice data) {
         if (StringUtils.isBlank(data.getId())) {
             data.setId(IdUtil.simpleUUID());
+            data.setState(VirtualDevice.STATE_STOPPED);
             data.setCreateAt(System.currentTimeMillis());
         }
         virtualDeviceRepository.save(MapstructUtils.convert(data, TbVirtualDevice.class));
@@ -130,7 +125,7 @@ public class VirtualDeviceDataImpl implements IVirtualDeviceData, IJPACommData<V
 
 
     @Override
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public void deleteById(String s) {
         virtualDeviceRepository.deleteById(s);
         virtualDeviceMappingRepository.deleteByVirtualId(s);
@@ -143,5 +138,4 @@ public class VirtualDeviceDataImpl implements IVirtualDeviceData, IJPACommData<V
     }
 
 
-
 }

+ 0 - 4
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/ProtocolController.java

@@ -103,15 +103,11 @@ public class ProtocolController {
         return protocolService.editConverter(req.getData());
     }
 
-
-
     @ApiOperation("获取转换脚本详情")
     @PostMapping("/getConverterScript")
     public ProtocolConverterVo getConverter(@RequestBody Request<String> req) {
         String id = req.getData();
-
         return protocolService.getConverter(id);
-
     }
 
     @PostMapping("/converterScript/edit")

+ 9 - 18
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/VirtualDeviceController.java

@@ -10,10 +10,10 @@
 package cc.iotkit.manager.controller;
 
 import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.api.Request;
 import cc.iotkit.common.enums.ErrCode;
 import cc.iotkit.common.exception.BizException;
-import cc.iotkit.common.satoken.utils.AuthUtil;
 import cc.iotkit.common.utils.ReflectUtil;
 import cc.iotkit.data.manager.IVirtualDeviceData;
 import cc.iotkit.manager.dto.bo.ChangeStateBo;
@@ -21,10 +21,8 @@ import cc.iotkit.manager.dto.bo.device.DeviceLogQueryBo;
 import cc.iotkit.manager.dto.bo.device.DeviceSaveScriptBo;
 import cc.iotkit.manager.dto.bo.virtualdevice.VirtualSaveDevicesBo;
 import cc.iotkit.manager.service.DataOwnerService;
-import cc.iotkit.common.api.Paging;
 import cc.iotkit.model.device.VirtualDevice;
 import cc.iotkit.model.device.VirtualDeviceLog;
-import cc.iotkit.model.product.Product;
 import cc.iotkit.temporal.IVirtualDeviceLogData;
 import cc.iotkit.virtualdevice.VirtualManager;
 import io.swagger.annotations.Api;
@@ -32,7 +30,10 @@ import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
@@ -53,14 +54,8 @@ public class VirtualDeviceController {
 
     @ApiOperation("获取虚拟设备列表")
     @PostMapping("/list")
-    public Paging<VirtualDevice> getDevices(
-            PageRequest<VirtualDevice> pageRequest) {
-        String uid = AuthUtil.getUserId();
-        if (AuthUtil.isAdmin()) {
-            return virtualDeviceData.findAll(pageRequest);
-        } else {
-            return virtualDeviceData.findByUid(uid, pageRequest.getPageNum(), pageRequest.getPageNum());
-        }
+    public Paging<VirtualDevice> getDevices(PageRequest<VirtualDevice> pageRequest) {
+        return virtualDeviceData.findAll(pageRequest);
     }
 
     /**
@@ -68,11 +63,7 @@ public class VirtualDeviceController {
      */
     @ApiOperation("添加虚拟设备")
     @PostMapping("/add")
-    public void add(VirtualDevice virtualDevice) {
-        virtualDevice.setId(null);
-        virtualDevice.setUid(AuthUtil.getUserId());
-        virtualDevice.setState(VirtualDevice.STATE_STOPPED);
-        virtualDevice.setCreateAt(System.currentTimeMillis());
+    public void add(@Validated @RequestBody VirtualDevice virtualDevice) {
         virtualDeviceData.save(virtualDevice);
     }
 
@@ -81,7 +72,7 @@ public class VirtualDeviceController {
      */
     @ApiOperation("修改虚拟设备")
     @PostMapping("/modify")
-    public void modify(Request<VirtualDevice> bo) {
+    public void modify(@Validated @RequestBody Request<VirtualDevice> bo) {
         VirtualDevice virtualDevice = bo.getData();
         VirtualDevice oldData = checkOwner(virtualDevice.getId());
         ReflectUtil.copyNoNulls(virtualDevice, oldData,

+ 8 - 1
iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/taskinfo/TaskInfoBo.java

@@ -18,7 +18,6 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = true)
 @AutoMapper(target = TaskInfo.class, reverseConvertGenerate = false)
 public class TaskInfoBo extends BaseDto {
-
     private static final long serialVersionUID = -1L;
 
     @ApiModelProperty(value = "id")
@@ -54,8 +53,16 @@ public class TaskInfoBo extends BaseDto {
     @Size(max = 255, message = "任务类型长度不正确")
     private String type;
 
+    @ApiModelProperty(value = "延时时长秒")
+    private Integer seconds;
+
     @ApiModelProperty(value = "创建者")
     @Size(max = 255, message = "创建者长度不正确")
     private String uid;
 
+    public void setSeconds(Integer seconds) {
+        if (TaskInfo.TYPE_DELAY.equals(getType())) {
+            setExpression("" + seconds);
+        }
+    }
 }

+ 6 - 0
iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/taskinfo/TaskInfoVo.java

@@ -68,5 +68,11 @@ public class TaskInfoVo implements Serializable {
     @ExcelProperty(value = "创建者")
     private String uid;
 
+    public Integer getSeconds() {
+        if (TaskInfo.TYPE_DELAY.equals(getType())) {
+            return Integer.parseInt(getExpression());
+        }
+        return null;
+    }
 
 }

+ 5 - 1
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/RuleEngineServiceImpl.java

@@ -247,7 +247,11 @@ public class RuleEngineServiceImpl implements IRuleEngineService {
         dataOwnerService.checkOwner(taskInfo);
         taskManager.deleteTask(taskId, "delete by " + AuthUtil.getUserId());
         taskInfoData.deleteById(taskId);
-        taskLogData.deleteByTaskId(taskId);
+        try {
+            taskLogData.deleteByTaskId(taskId);
+        } catch (Throwable e) {
+            log.error("delete task logs failed", e);
+        }
         return true;
     }