|
@@ -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; // 子节点处理中遇到了目标,返回结果
|
|
|
}
|