Преглед изворни кода

新增 创建连接信息接口

zhaiyifei пре 1 година
родитељ
комит
c11ab99fc9

+ 6 - 3
src/main/java/com/yunfeiyun/agmp/iotm/device/controller/IotDeviceconnController.java

@@ -2,12 +2,15 @@ package com.yunfeiyun.agmp.iotm.device.controller;
 
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 
 import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
 import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn;
+import com.yunfeiyun.agmp.iotm.device.domain.reqvo.IotDeviceconnAddReqVo;
 import com.yunfeiyun.agmp.iotm.device.service.IIotDeviceconnService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -75,10 +78,10 @@ public class IotDeviceconnController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('iot:deviceconn:add')")
     @Log(title = "设备连接配置", businessType = BusinessType.INSERT)
+    @Transactional(rollbackFor=Exception.class)
     @PostMapping("/add")
-    public AjaxResult add(@RequestBody IotDeviceconn iotDeviceconn)
-    {
-        return toAjax(iotDeviceconnService.insertIotDeviceconn(iotDeviceconn));
+    public AjaxResult add(@RequestBody @Valid IotDeviceconnAddReqVo reqVo) {
+        return toAjax(iotDeviceconnService.addDeviceconn(reqVo));
     }
 
     /**

+ 34 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/domain/reqvo/IotDeviceconnAddReqVo.java

@@ -0,0 +1,34 @@
+package com.yunfeiyun.agmp.iotm.device.domain.reqvo;
+
+import lombok.Data;
+
+import javax.validation.constraints.*;
+
+/**
+ * 设备连接配置对象 IotDeviceconn
+ * 
+ * @author 杨晓辉
+ * @date 2024-11-06
+ */
+@Data
+public class IotDeviceconnAddReqVo
+{
+
+    /** 设备类型标识 */
+    @NotNull(message = "设备类型标识不能为空")
+    @NotEmpty(message = "设备类型标识不能为空")
+    private String devtypeBid;
+
+    /** 连接类型 */
+    @Min(value = 0, message = "连接类型只能是私有或者通用")
+    @Max(value = 1, message = "连接类型只能是私有或者通用")
+    private String devconnType;
+
+    /** 连接名称 */
+    @NotNull(message = "连接名称不能为空")
+    @NotEmpty(message = "连接名称不能为空")
+    private String devconnName;
+
+    /** 连接配置JSON */
+    private String devconnConfig;
+}

+ 3 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/service/IIotDeviceconnService.java

@@ -1,6 +1,7 @@
 package com.yunfeiyun.agmp.iotm.device.service;
 
 import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn;
+import com.yunfeiyun.agmp.iotm.device.domain.reqvo.IotDeviceconnAddReqVo;
 
 import java.util.List;
 
@@ -59,4 +60,6 @@ public interface IIotDeviceconnService
      * @return 结果
      */
     public int deleteIotDeviceconnById(Long id);
+
+    public int addDeviceconn(IotDeviceconnAddReqVo reqVo);
 }

+ 56 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/service/impl/IotDeviceconnServiceImpl.java

@@ -2,9 +2,19 @@ package com.yunfeiyun.agmp.iotm.device.service.impl;
 
 import java.util.List;
 
+import com.alibaba.fastjson2.JSONArray;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.utils.DateUtils;
+import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
 import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn;
+import com.yunfeiyun.agmp.iot.common.domain.TosDevicetype;
+import com.yunfeiyun.agmp.iot.common.enums.IotDeviceconnTypeEnum;
+import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
+import com.yunfeiyun.agmp.iotm.device.domain.reqvo.IotDeviceconnAddReqVo;
 import com.yunfeiyun.agmp.iotm.device.mapper.IotDeviceconnMapper;
 import com.yunfeiyun.agmp.iotm.device.service.IIotDeviceconnService;
+import com.yunfeiyun.agmp.iotm.device.service.ITosDevicetypeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -20,6 +30,9 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
     @Autowired
     private IotDeviceconnMapper iotDeviceconnMapper;
 
+    @Autowired
+    private ITosDevicetypeService tosDevicetypeService;
+
     /**
      * 查询设备连接配置
      * 
@@ -53,6 +66,7 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
     @Override
     public int insertIotDeviceconn(IotDeviceconn iotDeviceconn)
     {
+        iotDeviceconn.setTid(SecurityUtils.getTid());
         return iotDeviceconnMapper.insertIotDeviceconn(iotDeviceconn);
     }
 
@@ -91,4 +105,46 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
     {
         return iotDeviceconnMapper.deleteIotDeviceconnById(id);
     }
+
+    @Override
+    public int addDeviceconn(IotDeviceconnAddReqVo reqVo) {
+        String devconnType = reqVo.getDevconnType();
+        String devtypeBid = reqVo.getDevtypeBid();
+        String devconnName = reqVo.getDevconnName();
+        String devconnConfig = reqVo.getDevconnConfig();
+
+        if(StringUtils.isEmpty(devconnName)){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"连接名称不能为空");
+        }
+
+        TosDevicetype tosDevicetype = tosDevicetypeService.selectTosDevicetypeByDevtypeBid(devtypeBid);
+        if(tosDevicetype == null){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备型号不存在");
+        }
+        if(IotDeviceconnTypeEnum.COMMON.getCode().equals(devconnType)){
+            devconnConfig = tosDevicetype.getDevTypeConfig();
+        }
+
+        try{
+            JSONArray jsonArray = JSONArray.parseArray(devconnConfig);
+            if(jsonArray == null || jsonArray.isEmpty()){
+                throw new Exception();
+            }
+        }catch (Exception e){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"连接配置格式错误");
+        }
+
+        IotDeviceconn iotDeviceconn = new IotDeviceconn();
+        iotDeviceconn.setDevconnBid(iotDeviceconn.getUUId());
+        iotDeviceconn.setDevtypeBid(devtypeBid);
+        iotDeviceconn.setDevconnType(devconnType);
+        iotDeviceconn.setDevconnName(devconnName);
+        iotDeviceconn.setDevconnConfig(devconnConfig);
+        iotDeviceconn.setDevconnCreator(SecurityUtils.getUserId());
+        iotDeviceconn.setDevconnCreateddate(DateUtils.dateTimeNow());
+        int status = insertIotDeviceconn(iotDeviceconn);
+
+        // Todo 发送消息,创建设备连接
+        return status;
+    }
 }