Przeglądaj źródła

新增 编辑设备信息接口

zhaiyifei 1 rok temu
rodzic
commit
0cbe79763c

+ 15 - 9
src/main/java/com/yunfeiyun/agmp/iotm/web/controller/IotDeviceController.java

@@ -6,11 +6,13 @@ import javax.validation.Valid;
 
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceAddReqVo;
+import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceEditReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
 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;
@@ -59,6 +61,18 @@ public class IotDeviceController extends BaseController
         List<IotDeviceListResVo> list = iotDeviceService.seletIotDeviceList(reqVo);
         return getDataTable(list);
     }
+
+    /**
+     * 修改设备基础
+     */
+    @PreAuthorize("@ss.hasPermi('iot:device:edit')")
+    @Log(title = "设备基础", businessType = BusinessType.UPDATE)
+    @Transactional(rollbackFor = Exception.class)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody @Valid IotDeviceEditReqVo reqVo) {
+        return toAjax(iotDeviceService.editIotDevice(reqVo));
+    }
+
     /**
      * 导出设备基础列表
      */
@@ -79,15 +93,7 @@ public class IotDeviceController extends BaseController
     public AjaxResult getInfo(@PathVariable("devBid") String devBid) {
         return success(iotDeviceService.selectIotDeviceByDevBid(devBid));
     }
-    /**
-     * 修改设备基础
-     */
-    @PreAuthorize("@ss.hasPermi('iot:device:edit')")
-    @Log(title = "设备基础", businessType = BusinessType.UPDATE)
-    @PutMapping("/edit")
-    public AjaxResult edit(@RequestBody IotDevice iotDevice) {
-        return toAjax(iotDeviceService.updateIotDevice(iotDevice));
-    }
+
     /**
      * 删除设备基础
      */

+ 0 - 2
src/main/java/com/yunfeiyun/agmp/iotm/web/domain/reqvo/IotDeviceAddReqVo.java

@@ -30,8 +30,6 @@ public class IotDeviceAddReqVo {
     private String[] devCodeList;
 
     /** 设备名称 */
-    @NotNull(message = "设备编号不能为空")
-    @NotEmpty(message = "设备编号不能为空")
     @Excel(name = "设备名称")
     private String devName;
 }

+ 39 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/domain/reqvo/IotDeviceEditReqVo.java

@@ -0,0 +1,39 @@
+package com.yunfeiyun.agmp.iotm.web.domain.reqvo;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 设备基础对象 IotDevice
+ * 
+ * @author 杨晓辉
+ * @date 2024-11-06
+ */
+@Data
+public class IotDeviceEditReqVo {
+    /** 设备标识 */
+    @NotNull(message = "设备标识不能为空")
+    @NotEmpty(message = "设备标识不能为空")
+    private String devBid;
+
+    /** 连接配置标识 */
+    @NotNull(message = "连接配置不能为空")
+    @NotEmpty(message = "连接配置不能为空")
+    @Excel(name = "连接配置标识")
+    private String devconnBid;
+
+    /** 设备编号 */
+    @NotNull(message = "设备编号不能为空")
+    @NotEmpty(message = "设备编号不能为空")
+    @Excel(name = "设备编号")
+    private String devCode;
+
+    /** 设备名称 */
+    @NotNull(message = "设备编号不能为空")
+    @NotEmpty(message = "设备编号不能为空")
+    @Excel(name = "设备名称")
+    private String devName;
+}

+ 9 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/mapper/IotDeviceconnMapper.java

@@ -46,4 +46,13 @@ public interface IotDeviceconnMapper
      * @return 结果
      */
     public int insertIotDeviceconnByBatch(List<IotDeviceconn> iotDeviceconnList);
+
+
+    /**
+     * 查询设备连接配置
+     *
+     * @param devconnBid 设备连接配置标识
+     * @return 设备连接配置
+     */
+    public IotDeviceconn selectIotDeviceconnByBid(String devconnBid);
 }

+ 5 - 1
src/main/java/com/yunfeiyun/agmp/iotm/web/service/IIotDeviceService.java

@@ -1,8 +1,10 @@
 package com.yunfeiyun.agmp.iotm.web.service;
 
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
+import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseCtlReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceAddReqVo;
+import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceEditReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
 
@@ -22,6 +24,8 @@ public interface IIotDeviceService
 
     public List<IotDeviceListResVo> seletIotDeviceList(IotDeviceListReqVo reqVo);
 
+    public int editIotDevice(IotDeviceEditReqVo reqVo);
+
     /**
      * 查询设备基础
      *
@@ -59,7 +63,7 @@ public interface IIotDeviceService
      * @param iotDevice 设备基础
      * @return 结果
      */
-    public int updateIotDevice(IotDevice iotDevice);
+    public int updateIotDevice(IotDevice iotDevice, IotDeviceconn oldDeviceconn, IotDeviceconn newDeviceconn);
     /**
      * 删除设备基础信息
      * 

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

@@ -86,4 +86,12 @@ public interface IIotDeviceconnService
      * @return 结果
      */
     public int insertIotDeviceconnByBatch(List<IotDeviceconn> iotDeviceconnList);
+
+    /**
+     * 查询设备连接配置
+     *
+     * @param devconnBid 设备连接配置标识
+     * @return 设备连接配置
+     */
+    public IotDeviceconn selectIotDeviceconnByBid(String devconnBid);
 }

+ 55 - 8
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotDeviceServiceImpl.java

@@ -18,6 +18,7 @@ import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseListReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
 
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceAddReqVo;
+import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceEditReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
 import com.yunfeiyun.agmp.iotm.web.mapper.IotDeviceMapper;
@@ -69,14 +70,10 @@ public class IotDeviceServiceImpl implements IIotDeviceService
             throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备编码不能为空");
         }
 
-        IotDeviceconn selectDeviceconn = new IotDeviceconn();
-        selectDeviceconn.setDevconnBid(devconnBid);
-        List<IotDeviceconn> iotDeviceconnList = iotDeviceconnService.selectIotDeviceconnList(selectDeviceconn);
-        if(iotDeviceconnList == null || iotDeviceconnList.isEmpty()){
-            throw new RuntimeException("设备连接不存在");
+        IotDeviceconn iotDeviceconn = iotDeviceconnService.selectIotDeviceconnByBid(devconnBid);
+        if(iotDeviceconn == null){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "设备连接不存在");
         }
-
-        IotDeviceconn iotDeviceconn = iotDeviceconnList.get(0);
         String devName = iotDeviceconn.getDevtypeName();
         if(devCodeList.length == 1){
             devName = reqVo.getDevName();
@@ -142,6 +139,53 @@ public class IotDeviceServiceImpl implements IIotDeviceService
         return iotDeviceListResVoList;
     }
 
+    @Override
+    public int editIotDevice(IotDeviceEditReqVo reqVo) {
+        String devBid = reqVo.getDevBid();
+        String devName = reqVo.getDevName();
+        String devCode = reqVo.getDevCode();
+        String devconnBid = reqVo.getDevconnBid();
+        if(StringUtils.isEmpty(devName) || StringUtils.isEmpty(devCode)){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"参数不能为空");
+        }
+
+        IotDevice iotDevice = selectIotDeviceByDevBid(devBid);
+        if(iotDevice == null){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备不存在");
+        }
+
+        IotDeviceconn oldIotDeviceconn = iotDeviceconnService.selectIotDeviceconnByBid(iotDevice.getDevconnBid());
+
+        IotDeviceconn newIotDeviceconn = iotDeviceconnService.selectIotDeviceconnByBid(devconnBid);
+        if(newIotDeviceconn == null){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "设备连接不存在");
+        }
+
+        IotDevice selectIotDevice = new IotDevice();
+        selectIotDevice.setFirmBid(newIotDeviceconn.getFirmBid());
+        selectIotDevice.setDevCode(devCode);
+        selectIotDevice.setDevtypeBid(newIotDeviceconn.getDevtypeBid());
+
+        List<IotDevice> iotDeviceList = selectIotDeviceList(selectIotDevice);
+        Set<String> devSet = new HashSet<>();
+        for (IotDevice item : iotDeviceList) {
+            devSet.add(item.getFirmBid() + item.getDevtypeBid() + item.getDevCode());
+        }
+        String devKey = iotDevice.getFirmBid() + iotDevice.getDevtypeBid() + iotDevice.getDevCode();
+        devSet.remove(devKey);
+        if(!devSet.isEmpty()){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"该设备编码已存在");
+        }
+
+        iotDevice.setDevName(devName);
+        iotDevice.setDevCode(devCode);
+        iotDevice.setDevconnBid(newIotDeviceconn.getDevconnBid());
+        iotDevice.setDevModifier(SecurityUtils.getUserId());
+        iotDevice.setDevModifieddate(DateUtils.dateTimeNow());
+
+        return updateIotDevice(iotDevice, oldIotDeviceconn, newIotDeviceconn);
+    }
+
     /**
      * 查询设备基础
      *
@@ -207,8 +251,11 @@ public class IotDeviceServiceImpl implements IIotDeviceService
      * @return 结果
      */
     @Override
-    public int updateIotDevice(IotDevice iotDevice) {
+    public int updateIotDevice(IotDevice iotDevice, IotDeviceconn oldDeviceconn, IotDeviceconn newDeviceconn){
         int result = iotDeviceMapper.updateIotDevice(iotDevice);
+        // TODO 发送消息
+        // 解除旧连接订阅
+        // 订阅新连接
         sendToTosMsgService.sendIotDeviceUpdateMsg(iotDevice);
         sendToIotsMsgService.sendIotDeviceUpdateMsg(iotDevice);
         return result;

+ 11 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotDeviceconnServiceImpl.java

@@ -292,5 +292,16 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
         return iotDeviceconnMapper.insertIotDeviceconnByBatch(iotDeviceconnList);
     }
 
+    /**
+     * 查询设备连接配置
+     *
+     * @param devconnBid 设备连接配置标识
+     * @return 设备连接配置
+     */
+    @Override
+    public IotDeviceconn selectIotDeviceconnByBid(String devconnBid) {
+        return iotDeviceconnMapper.selectIotDeviceconnByBid(devconnBid);
+    }
+
 
 }

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

@@ -69,6 +69,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         GROUP BY dcn.devtypeBid
     </select>
 
+    <select id="selectIotDeviceconnByBid" parameterType="string" resultType="com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn">
+        SELECT dcn.devconnBid, dcn.devconnType, dcn.devconnName, dcn.devconnRemark, dc.devclassBid, dc.devclassCode,
+            dc.devclassName, dt.devtypeBid, dt.devtypeCode, dt.devtypeName, dcn.devconnCreateddate
+        FROM IotDeviceconn AS dcn
+            LEFT JOIN TosDevicetype AS dt ON dt.devtypeBid = dcn.devtypeBid
+            LEFT JOIN TosDeviceclass AS dc ON dc.devclassBid = dt.devclassBid
+        WHERE dcn.devconnBid = #{devconnBid}
+    </select>
+
     <insert id="insertIotDeviceconnByBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
         insert into IotDeviceconn (
             devconnBid, devtypeBid, devconnType, devconnName, devconnConfig, devconnRemark, devconnCreator,