Quellcode durchsuchen

新增 创建连接配置接口

zhaiyifei vor 1 Jahr
Ursprung
Commit
cac8ed14b3

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

@@ -41,6 +41,17 @@ public class IotDeviceconnController extends BaseController
     private IIotDeviceconnService iotDeviceconnService;
 
     /**
+     * 新增设备连接配置
+     */
+    @PreAuthorize("@ss.hasPermi('iot:deviceconn:add')")
+    @Log(title = "设备连接配置", businessType = BusinessType.INSERT)
+    @Transactional(rollbackFor=Exception.class)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody @Valid IotDeviceconnAddReqVo reqVo) {
+        return toAjax(iotDeviceconnService.addDeviceconn(reqVo));
+    }
+
+    /**
      * 查询设备连接配置列表
      */
     @PreAuthorize("@ss.hasPermi('iot:deviceconn:list')")
@@ -76,17 +87,6 @@ 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 @Valid IotDeviceconnAddReqVo reqVo) {
-        return toAjax(iotDeviceconnService.addDeviceconn(reqVo));
-    }
-
-    /**
      * 修改设备连接配置
      */
     @PreAuthorize("@ss.hasPermi('iot:deviceconn:edit')")

+ 27 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/domain/IotDevconnConfigInfoVo.java

@@ -0,0 +1,27 @@
+package com.yunfeiyun.agmp.iotm.device.domain;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 设备连接配置对象
+ * 
+ * @author 杨晓辉
+ * @date 2024-11-06
+ */
+
+
+@Data
+public class IotDevconnConfigInfoVo {
+    /** 连接名称 */
+    @NotNull(message = "连接名称不能为空")
+    @NotEmpty(message = "连接名称不能为空")
+    private String devconnName;
+
+    @NotNull(message = "连接名称不能为空")
+    @NotEmpty(message = "连接名称不能为空")
+    /** 连接配置JSON */
+    private String devconnConfig;
+}

+ 5 - 11
src/main/java/com/yunfeiyun/agmp/iotm/device/domain/reqvo/IotDeviceconnAddReqVo.java

@@ -1,9 +1,10 @@
 package com.yunfeiyun.agmp.iotm.device.domain.reqvo;
 
-import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.iotm.device.domain.IotDevconnConfigInfoVo;
 import lombok.Data;
 
 import javax.validation.constraints.*;
+import java.util.List;
 
 /**
  * 设备连接配置对象 IotDeviceconn
@@ -25,14 +26,7 @@ public class IotDeviceconnAddReqVo
     @Max(value = 1, message = "连接类型只能是私有或者通用")
     private String devconnType;
 
-    /** 连接名称 */
-    @NotNull(message = "连接名称不能为空")
-    @NotEmpty(message = "连接名称不能为空")
-    private String devconnName;
-
-    /** 连接配置JSON */
-    private String devconnConfig;
-
-    /** 连接备注 */
-    private String devconnRemark;
+    /** 连接配置列表 */
+    @NotNull(message = "设备类型标识不能为空")
+    private List<IotDevconnConfigInfoVo> devconnConfigList;
 }

+ 8 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/mapper/IotDeviceconnMapper.java

@@ -70,4 +70,12 @@ public interface IotDeviceconnMapper
      * @return 设备连接配置集合
      */
     public List<IotDeviceconnListRspVo> listDeviceconn(IotDeviceconnListReqVo reqVo);
+
+    /**
+     * 批量新增设备连接配置
+     *
+     * @param iotDeviceconnList 设备连接配置列表
+     * @return 结果
+     */
+    public int insertIotDeviceconnByBatch(List<IotDeviceconn> iotDeviceconnList);
 }

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

@@ -72,4 +72,12 @@ public interface IIotDeviceconnService
      * @return 设备连接配置集合
      */
     public List<IotDeviceconnListRspVo> listDeviceconn(IotDeviceconnListReqVo reqVo);
+
+    /**
+     * 批量新增设备连接配置
+     *
+     * @param iotDeviceconnList 设备连接配置列表
+     * @return 结果
+     */
+    public int insertIotDeviceconnByBatch(List<IotDeviceconn> iotDeviceconnList);
 }

+ 74 - 23
src/main/java/com/yunfeiyun/agmp/iotm/device/service/impl/IotDeviceconnServiceImpl.java

@@ -1,5 +1,6 @@
 package com.yunfeiyun.agmp.iotm.device.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import com.alibaba.fastjson2.JSONArray;
@@ -11,6 +12,7 @@ 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.IotDevconnConfigInfoVo;
 import com.yunfeiyun.agmp.iotm.device.domain.reqvo.IotDeviceconnAddReqVo;
 import com.yunfeiyun.agmp.iotm.device.domain.reqvo.IotDeviceconnListReqVo;
 import com.yunfeiyun.agmp.iotm.device.domain.resvo.IotDeviceconnListRspVo;
@@ -113,40 +115,75 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
     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(),"连接名称不能为空");
+        List<IotDevconnConfigInfoVo> devconnConfigList = reqVo.getDevconnConfigList();
+        if(devconnConfigList == null || devconnConfigList.isEmpty()){
+            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();
+        IotDeviceconn selectIotDeviceconn = new IotDeviceconn();
+        selectIotDeviceconn.setDevtypeBid(devtypeBid);
+
+        List<IotDeviceconn> iotDeviceconnList = selectIotDeviceconnList(selectIotDeviceconn);
+        if(iotDeviceconnList != null && !iotDeviceconnList.isEmpty()){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"该设备型号已存在连接配置");
         }
 
-        try{
-            JSONArray jsonArray = JSONArray.parseArray(devconnConfig);
-            if(jsonArray == null || jsonArray.isEmpty()){
-                throw new Exception();
+        List<IotDeviceconn> insertIotDeviceconnList = new ArrayList<>();
+
+        if(IotDeviceconnTypeEnum.COMMON.getCode().equals(devconnType)){
+            IotDeviceconn iotDeviceconn = new IotDeviceconn();
+            iotDeviceconn.setDevconnBid(iotDeviceconn.getUUId());
+            iotDeviceconn.setDevtypeBid(devtypeBid);
+            iotDeviceconn.setDevconnType(devconnType);
+            iotDeviceconn.setDevconnName(IotDeviceconnTypeEnum.COMMON.getName());
+            iotDeviceconn.setDevconnConfig(tosDevicetype.getDevTypeConfig());
+            iotDeviceconn.setDevconnCreator(SecurityUtils.getUserId());
+            iotDeviceconn.setDevconnCreateddate(DateUtils.dateTimeNow());
+
+            insertIotDeviceconnList.add(iotDeviceconn);
+        }else{
+            String diffName = "";
+            for(IotDevconnConfigInfoVo devconnConfigInfo : devconnConfigList){
+                String devconnName = devconnConfigInfo.getDevconnName();
+                if(StringUtils.isEmpty(devconnName)){
+                    throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"连接名称不能为空");
+                }
+                if(diffName.equals(devconnName)){
+                    throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"连接名称不能重复");
+                }
+                String devconnConfig = devconnConfigInfo.getDevconnConfig();
+                if(StringUtils.isEmpty(devconnConfig)){
+                    throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"连接配置不能为空");
+                }
+
+                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());
+
+                insertIotDeviceconnList.add(iotDeviceconn);
+                diffName = devconnName;
             }
-        }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.setDevconnRemark(reqVo.getDevconnRemark());
-        iotDeviceconn.setDevconnCreator(SecurityUtils.getUserId());
-        iotDeviceconn.setDevconnCreateddate(DateUtils.dateTimeNow());
-        int status = insertIotDeviceconn(iotDeviceconn);
+        int status = insertIotDeviceconnByBatch(insertIotDeviceconnList);
 
         // Todo 发送消息,创建设备连接
         return status;
@@ -163,4 +200,18 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
         List<IotDeviceconnListRspVo> iotDeviceconnListRspVoList = iotDeviceconnMapper.listDeviceconn(reqVo);
         return iotDeviceconnListRspVoList;
     }
+
+    /**
+     * 批量新增设备连接配置
+     *
+     * @param iotDeviceconnList 设备连接配置列表
+     * @return 结果
+     */
+    @Override
+    public int insertIotDeviceconnByBatch(List<IotDeviceconn> iotDeviceconnList) {
+        for (IotDeviceconn iotDeviceconn : iotDeviceconnList) {
+            iotDeviceconn.setTid(SecurityUtils.getTid());
+        }
+        return iotDeviceconnMapper.insertIotDeviceconnByBatch(iotDeviceconnList);
+    }
 }

+ 14 - 0
src/main/resources/mapper/IotDeviceconnMapper.xml

@@ -94,6 +94,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="tid != null">#{tid},</if>
          </trim>
     </insert>
+    <insert id="insertIotDeviceconnByBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+        insert into IotDeviceconn (
+            devconnBid, devtypeBid, devconnType, devconnName, devconnConfig, devconnRemark, devconnCreator,
+            devconnModifier, devconnModifieddate, devconnCreateddate, tid
+        )
+        values
+        <foreach collection="list" item="item" separator="," index="index">
+            (
+                #{item.devconnBid}, #{item.devtypeBid}, #{item.devconnType}, #{item.devconnName}, #{item.devconnConfig},
+                #{item.devconnRemark}, #{item.devconnCreator}, #{item.devconnModifier}, #{item.devconnModifieddate},
+                #{item.devconnCreateddate}, #{item.tid}
+            )
+        </foreach>
+    </insert>
 
     <update id="updateIotDeviceconn" parameterType="IotDeviceconn">
         update IotDeviceconn