Ver código fonte

项目关联:不允许删除项目和设备
删除的项目不允许编辑
一个设备只允许关联一个项目

xucaiqin 2 anos atrás
pai
commit
c2ad45e6c2

+ 15 - 3
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/mapper/IotProjectDeviceMapper.java

@@ -2,7 +2,6 @@ package com.middle.platform.manage.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.middle.platform.manage.biz.domain.req.IotProjectDevicePara;
-import com.middle.platform.manage.biz.domain.req.ProjectPage;
 import com.middle.platform.manage.biz.domain.vo.IotDeviceVo;
 import com.middle.platform.manage.biz.entity.IotProjectDevice;
 import org.apache.ibatis.annotations.Mapper;
@@ -31,10 +30,23 @@ public interface IotProjectDeviceMapper extends BaseMapper<IotProjectDevice> {
 
     IotProjectDevice selectByProjectDevice(IotProjectDevice iotProjectDevice);
 
-    Integer updateById(@Param("deviceId") Long deviceId,@Param("enableFlag")  Long enableFlag);
+    Integer updateById(@Param("deviceId") Long deviceId, @Param("enableFlag") Long enableFlag);
 
     Integer updateProDeviceUntie(@Param("id") Long id);
+
     Integer deleteProDeviceUntie(@Param("id") Long id);
 
     Integer updateByProjectDevice(IotProjectDevice iotProjectDevice);
-}
+
+    /**
+     * @param id 项目id
+     * @return
+     */
+    Integer queryProject(@Param("id") Long id);
+
+    /**
+     * @param id 设备id
+     * @return
+     */
+    Integer queryDevice(@Param("id") Long id);
+}

+ 7 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotDeviceService.java

@@ -21,6 +21,7 @@ import com.middle.platform.manage.biz.entity.IotDevice;
 import com.middle.platform.manage.biz.entity.IotProduct;
 import com.middle.platform.manage.biz.mapper.IotDeviceMapper;
 import com.middle.platform.manage.biz.mapper.IotProductMapper;
+import com.middle.platform.manage.biz.mapper.IotProjectDeviceMapper;
 import com.middle.platform.pagehelper.core.PageRes;
 import com.middle.platform.redis.constant.CacheConstant;
 import com.middle.platform.redis.service.CacheService;
@@ -50,6 +51,7 @@ import java.util.Set;
 public class IotDeviceService {
     private final IotDeviceMapper iotDeviceMapper;
     private final IotProductMapper iotProductMapper;
+    private final IotProjectDeviceMapper iotProjectDeviceMapper;
     private final CacheService cacheService;
     private final DictApi dictApi;
     private final UserApi userApi;
@@ -113,6 +115,11 @@ public class IotDeviceService {
         if (Objects.isNull(iotDevice1)) {
             throw new BusinessException("设备不存在");
         }
+        //设备删除校验
+        Integer integer = iotProjectDeviceMapper.queryDevice(id);
+        if (Objects.nonNull(integer) && integer > 0) {
+            throw new BusinessException("设备存在关联项目不允许删除");
+        }
         IotDevice iotDevice = new IotDevice();
         iotDevice.setDeleteTime(LocalDateTime.now());
         iotDevice.setDelFlag(Global.DEL);

+ 16 - 15
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotProjectDeviceService.java

@@ -1,6 +1,6 @@
 package com.middle.platform.manage.biz.service;
 
-import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.middle.platform.common.constant.Global;
@@ -19,7 +19,6 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Objects;
 
@@ -84,20 +83,22 @@ public class IotProjectDeviceService extends ServiceImpl<IotProjectDeviceMapper,
             check(deviceId);
         }
         iotProjectDevicePara.getDeviceIds().forEach(e -> {
-            IotProjectDevice iotProjectDevice = new IotProjectDevice();
-            iotProjectDevice.setDeviceId(e);
-            iotProjectDevice.setUpdateBy(StpUtil.getLoginIdAsLong());
-            iotProjectDevice.setUpdateTime(LocalDateTime.now());
-            iotProjectDevice.setProjectId(iotProjectDevicePara.getProjectId());
-            IotProjectDevice res = iotProjectDeviceMapper.selectByProjectDevice(iotProjectDevice);
-            if (res == null) {
-                iotProjectDevice.setCreateBy(StpUtil.getLoginIdAsLong());
-                iotProjectDevice.setCreateTime(LocalDateTime.now());
-                //没有则新增
-                iotProjectDeviceMapper.insert(iotProjectDevice);
-            } else {
+            IotProjectDevice iotProjectDevice = iotProjectDeviceMapper.selectOne(new LambdaQueryWrapper<IotProjectDevice>()
+                    .eq(IotProjectDevice::getDeviceId, e)
+                    .eq(IotProjectDevice::getDelFlag, Global.UN_DEL)
+            );
+            if (Objects.nonNull(iotProjectDevice)) {
                 //有则更新状态即可
-                iotProjectDeviceMapper.updateByProjectDevice(iotProjectDevice);
+                iotProjectDevice.setProjectId(iotProjectDevice.getProjectId());
+                iotProjectDevice.setUpdateBy(null);
+                iotProjectDevice.setUpdateTime(null);
+                iotProjectDeviceMapper.updateById(iotProjectDevice);
+            } else {
+                //没有则新增
+                IotProjectDevice iotProjectDeviceA = new IotProjectDevice();
+                iotProjectDeviceA.setProjectId(iotProjectDevicePara.getProjectId());
+                iotProjectDeviceA.setDeviceId(e);
+                iotProjectDeviceMapper.insert(iotProjectDeviceA);
             }
         });
         return true;

+ 8 - 0
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/IotProjectService.java

@@ -75,6 +75,7 @@ public class IotProjectService {
     /**
      * 删除
      *
+     * @param id 项目id
      * @author Aick Spt
      * @date 2023-12-23 14:35
      */
@@ -83,6 +84,12 @@ public class IotProjectService {
         if (Objects.isNull(iotProject) || iotProject.getDelFlag() == Global.DEL) {
             throw new BusinessException("项目不存在");
         }
+        //项目删除校验
+        Integer integer = iotProjectDeviceMapper.queryProject(id);
+        //项目存在关联设备不允许删除
+        if (Objects.nonNull(integer) && integer > 0) {
+            throw new BusinessException("项目存在关联设备不允许删除");
+        }
         return iotProjectMapper.delete(id);
     }
 
@@ -132,6 +139,7 @@ public class IotProjectService {
         if (Objects.isNull(iotProjectPara.getId())) {
             throw new BusinessException("id不能为空");
         }
+        check(iotProjectPara.getId());
         IotProject iotProject = new IotProject();
         iotProject.setId(iotProjectPara.getId());
         iotProject.setRemark(iotProjectPara.getRemark());

+ 6 - 3
iot-module/iot-module-manage/iot-module-manage-biz/src/main/java/com/middle/platform/manage/biz/service/RealTimeMonitoringService.java

@@ -1,5 +1,6 @@
 package com.middle.platform.manage.biz.service;
 
+import cn.hutool.core.collection.CollUtil;
 import com.middle.platform.manage.biz.domain.req.TypeStatisticsReq;
 import com.middle.platform.manage.biz.domain.vo.TotalStatisticsVo;
 import com.middle.platform.manage.biz.domain.vo.TypeStatisticsVo;
@@ -8,6 +9,7 @@ import com.middle.platform.manage.biz.mapper.IotProductMapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -46,9 +48,10 @@ public class RealTimeMonitoringService {
      */
     public List<TypeStatisticsVo> typeStatistics(TypeStatisticsReq typeStatisticsReq) {
         List<TypeStatisticsVo> typeStatisticsVos = iotDeviceMapper.queryTypeStatistics(typeStatisticsReq);
-        typeStatisticsVos.forEach(e -> {
-            e.setStatusName(e.getStatus().equals(1) ? "在线" : "离线");
-        });
+        if (CollUtil.isEmpty(typeStatisticsVos)) {
+            return new ArrayList<>();
+        }
+        typeStatisticsVos.forEach(e -> e.setStatusName(e.getStatus().equals(1) ? "在线" : "离线"));
         return typeStatisticsVos;
     }
 }

+ 2 - 2
iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotDeviceMapper.xml

@@ -94,10 +94,10 @@
             ide.del_flag = 0
               and ide.enable_flag = 1
             <if test="deviceId != null">
-                and id = #{deviceId,jdbcType=BIGINT}
+                and ide.id = #{deviceId,jdbcType=BIGINT}
             </if>
             <if test="productId != null">
-                and product_id = #{productId,jdbcType=BIGINT}
+                and ipd.product_id = #{productId,jdbcType=BIGINT}
             </if>
         </where>
     </select>

+ 28 - 1
iot-module/iot-module-manage/iot-module-manage-biz/src/main/resources/mapper/IotProjectDeviceMapper.xml

@@ -95,6 +95,7 @@
         <where>
             project_id = #{projectId,jdbcType=BIGINT}
               and device_id = #{deviceId,jdbcType=BIGINT}
+              and del_flag = 0
         </where>
     </select>
 
@@ -108,4 +109,30 @@
                 and device_id = #{deviceId,jdbcType=BIGINT}
         </where>
     </update>
-</mapper>
+
+    <select id="queryProject" resultType="java.lang.Integer">
+        select count(ipd.id) as deviceNum
+        from iot_project_device ipd
+                 left join iot_device ide on ide.id = ipd.device_id
+        <where>
+            ipd.del_flag = 0
+              and ide.del_flag = 0
+            <if test="id != null">
+                and ipd.project_id = #{id}
+            </if>
+        </where>
+    </select>
+
+    <select id="queryDevice" resultType="java.lang.Integer">
+        select count(ipd.id) as deviceNum
+        from iot_project_device ipd
+        left join iot_device ide on ide.id = ipd.device_id
+        <where>
+            ipd.del_flag = 0
+            and ide.del_flag = 0
+            <if test="id != null">
+                and ipd.device_id = #{id}
+            </if>
+        </where>
+    </select>
+</mapper>