lipenghui пре 2 недеља
родитељ
комит
7483f63219

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotInfoMapper.java

@@ -5,6 +5,7 @@ import java.util.*;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.infra.dal.dataobject.codegen.CodegenColumnDO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoPageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
@@ -31,4 +32,8 @@ public interface IotInfoMapper extends BaseMapperX<IotInfoDO> {
                 .orderByDesc(IotInfoDO::getId));
     }
 
+    default void deleteListByClassId(List<Long> classIds) {
+        delete(new LambdaQueryWrapperX<IotInfoDO>()
+                .inIfPresent(IotInfoDO::getClassId, classIds));
+    }
 }

+ 13 - 7
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotInfoServiceImpl.java

@@ -287,13 +287,16 @@ public class IotInfoServiceImpl implements IotInfoService {
                 for (JsonNode itemNode : rootNode) {
                     // 处理文件夹结构
                     JsonNode folderStructureNode = itemNode.get("folderStructure");
+                    JsonNode filesNode = itemNode.get("files");
+                    List<String> names = new ArrayList<>();
+                    for (JsonNode jsonNode : filesNode) {
+                        names.add(jsonNode.get("name").asText());
+                    }
                     Long fileClassId = null;
                     if (folderStructureNode != null) {
-                        fileClassId = processFolderStructure(folderStructureNode, parentId, deptId, deviceCode, deptName);
+                        fileClassId = processFolderStructure(folderStructureNode, parentId, deptId, deviceCode, deptName, names);
                     }
 
-                    // todo 处理文件
-                    JsonNode filesNode = itemNode.get("files");
                     if (filesNode != null && filesNode.isArray()&&Objects.nonNull(fileClassId)) {
                         processFiles(filesNode, parentId, fileClassId, deviceId, deptId, deviceCode, deptName);
                     }
@@ -353,7 +356,7 @@ public class IotInfoServiceImpl implements IotInfoService {
      * @param deptId 部门ID
      * @return 遇到包含"."的文件夹时返回其parentId,否则返回null
      */
-    private Long processFolderStructure(JsonNode folderStructureNode, Long parentId, Long deptId, String deviceCode, String deptName) {
+    private Long processFolderStructure(JsonNode folderStructureNode, Long parentId, Long deptId, String deviceCode, String deptName, List<String> names) {
         Iterator<String> fieldNames = folderStructureNode.fieldNames();
 
         while (fieldNames.hasNext()) {
@@ -361,8 +364,11 @@ public class IotInfoServiceImpl implements IotInfoService {
             JsonNode folderNode = folderStructureNode.get(folderName);
 
             // 检查文件夹名是否包含".",如果是则返回当前parentId
-            if (folderName.contains(".")) {
-                return parentId; // 返回当前节点的父ID
+//            if (folderName.contains(".")) {
+//                return parentId; // 返回当前节点的父ID
+//            }
+            if (names.contains(folderName)) {
+                return parentId;
             }
 
             // 查询是否已存在同名同父节点的记录
@@ -389,7 +395,7 @@ public class IotInfoServiceImpl implements IotInfoService {
             JsonNode childrenNode = folderNode.get("children");
             if (childrenNode != null && !childrenNode.isNull() && !childrenNode.isEmpty()) {
                 // 递归调用,如果子节点处理中返回了parentId,则向上传递
-                Long result = processFolderStructure(childrenNode, currentNodeId, deptId, deviceCode, deptName);
+                Long result = processFolderStructure(childrenNode, currentNodeId, deptId, deviceCode, deptName, names);
                 if (result != null) {
                     return result; // 子节点处理中遇到了目标,返回结果
                 }

+ 11 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotTreeServiceImpl.java

@@ -14,11 +14,13 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotInfoClassifyMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.IotInfoMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotTreeMapper;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -27,6 +29,7 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
 
@@ -49,6 +52,8 @@ public class IotTreeServiceImpl implements IotTreeService {
     private IotDeviceMapper iotDeviceMapper;
     @Autowired
     private IotInfoClassifyMapper iotInfoClassifyMapper;
+    @Autowired
+    private IotInfoMapper iotInfoMapper;
 
     @Override
     public List<IotTreeDO> getIotDeviceTree(Long deviceId) {
@@ -126,9 +131,12 @@ public class IotTreeServiceImpl implements IotTreeService {
         // 校验存在
         validateIotTreeExists(id);
 
-
-        // 删除
-        iotTreeMapper.deleteById(id);
+        List<Long> childIds = getChildTreeList(ImmutableList.of(id)).stream().map(IotTreeDO::getId).collect(Collectors.toList());
+        childIds.add(id);
+        //删除iot的树形结构
+        iotTreeMapper.deleteByIds(childIds);
+        // 删除资料
+        iotInfoMapper.deleteListByClassId(childIds);
     }
 
     private void validateIotTreeExists(Long id) {