From 7e10354b263015632ff787221f0ca3c8a18224c2 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期四, 26 六月 2025 14:16:41 +0800
Subject: [PATCH] 工单业务

---
 server/src/main/java/com/doumee/api/web/WebCategoryController.java             |    8 ++
 server/src/main/java/com/doumee/dao/web/vo/CategoryMapTree.java                |   88 ++++++++++++++++++++++
 server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java |  137 +++++++++++++++++++++++++++++++++-
 server/src/main/java/com/doumee/service/business/CategoryService.java          |    2 
 4 files changed, 231 insertions(+), 4 deletions(-)

diff --git a/server/src/main/java/com/doumee/api/web/WebCategoryController.java b/server/src/main/java/com/doumee/api/web/WebCategoryController.java
index 0c034c0..3880c8b 100644
--- a/server/src/main/java/com/doumee/api/web/WebCategoryController.java
+++ b/server/src/main/java/com/doumee/api/web/WebCategoryController.java
@@ -87,4 +87,12 @@
             return ApiResponse.failed(ResponseStatus.SERVER_ERROR);
         }
     }
+
+
+//    @GetMapping("/dealjson")
+//    @ApiOperation("dealjson")
+//    public ApiResponse dealjson(){
+//        categoryService.dealjson();
+//        return ApiResponse.success(null);
+//    }
 }
diff --git a/server/src/main/java/com/doumee/dao/web/vo/CategoryMapTree.java b/server/src/main/java/com/doumee/dao/web/vo/CategoryMapTree.java
new file mode 100644
index 0000000..2ae3fde
--- /dev/null
+++ b/server/src/main/java/com/doumee/dao/web/vo/CategoryMapTree.java
@@ -0,0 +1,88 @@
+package com.doumee.dao.web.vo;
+
+import com.doumee.core.constants.Constants;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/4/8 9:19
+ */
+public class CategoryMapTree {
+
+    // 淇濆瓨鍙備笌鏋勫缓鏍戝舰鐨勬墍鏈夋暟鎹紙閫氬父鏁版嵁搴撴煡璇㈢粨鏋滐級
+    public List<Map<String,Object>> nodeList = new ArrayList<>();
+
+    /**
+     *  鏋勯�犳柟娉�
+     *  @param nodeList 灏嗘暟鎹泦鍚堣祴鍊肩粰nodeList锛屽嵆鎵�鏈夋暟鎹綔涓烘墍鏈夎妭鐐广��
+     */
+    public CategoryMapTree(List<Map<String,Object>> nodeList){
+        this.nodeList = nodeList;
+    }
+
+
+    /**
+     *   鑾峰彇闇�鏋勫缓鐨勬墍鏈夋牴鑺傜偣锛堥《绾ц妭鐐癸級 "0"
+     *   @return 鎵�鏈夋牴鑺傜偣List闆嗗悎
+     */
+    public List<Map<String,Object>> getRootNode(){
+        // 淇濆瓨鎵�鏈夋牴鑺傜偣锛堟墍鏈夋牴鑺傜偣鐨勬暟鎹級
+        List<Map<String,Object>> rootNodeList = new ArrayList<>();
+        // treeNode锛氭煡璇㈠嚭鐨勬瘡涓�鏉℃暟鎹紙鑺傜偣锛�
+        for (Map<String,Object> treeNode : nodeList){
+            // 鍒ゆ柇褰撳墠鑺傜偣鏄惁涓烘牴鑺傜偣锛屾澶勬敞鎰忥細鑻arentId绫诲瀷鏄疭tring锛屽垯瑕侀噰鐢╡quals()鏂规硶鍒ゆ柇銆�
+            if(Integer.valueOf(treeNode.get("level").toString())==1){
+                rootNodeList.add(treeNode);
+            }
+        }
+        return rootNodeList;
+    }
+
+
+    /**
+     *  鏍规嵁姣忎竴涓《绾ц妭鐐癸紙鏍硅妭鐐癸級杩涜鏋勫缓鏍戝舰缁撴瀯
+     *  @return  鏋勫缓鏁存5鏍�
+     */
+    public List<Map<String,Object>> buildTree(){
+        // treeNodes锛氫繚瀛樹竴涓《绾ц妭鐐规墍鏋勫缓鍑烘潵鐨勫畬鏁存爲褰�
+        List<Map<String,Object>> treeNodes = new ArrayList<Map<String,Object>>();
+        // getRootNode()锛氳幏鍙栨墍鏈夌殑鏍硅妭鐐�
+        for (Map<String,Object> treeRootNode : getRootNode()) {
+            // 灏嗛《绾ц妭鐐硅繘琛屾瀯寤哄瓙鏍�
+            treeRootNode = buildChildTree(treeRootNode);
+            // 瀹屾垚涓�涓《绾ц妭鐐规墍鏋勫缓鐨勬爲褰紝澧炲姞杩涙潵
+            treeNodes.add(treeRootNode);
+        }
+        return treeNodes;
+    }
+
+    /**
+     *  閫掑綊-----鏋勫缓瀛愭爲褰㈢粨鏋�
+     *  @param  pNode 鏍硅妭鐐癸紙椤剁骇鑺傜偣锛�
+     *  @return 鏁存5鏍�
+     */
+    public Map<String,Object> buildChildTree(Map<String,Object> pNode){
+        List<Map<String,Object>> childTree = new ArrayList<Map<String,Object>>();
+        // nodeList锛氭墍鏈夎妭鐐归泦鍚堬紙鎵�鏈夋暟鎹級
+        for (Map<String,Object> treeNode : nodeList) {
+            // 鍒ゆ柇褰撳墠鑺傜偣鐨勭埗鑺傜偣ID鏄惁绛変簬鏍硅妭鐐圭殑ID锛屽嵆褰撳墠鑺傜偣涓哄叾涓嬬殑瀛愯妭鐐�
+            if ( treeNode.get("parentId").toString().equals(pNode.get("id").toString())) {
+                // 鍐嶉�掑綊杩涜鍒ゆ柇褰撳墠鑺傜偣鐨勬儏鍐碉紝璋冪敤鑷韩鏂规硶
+                childTree.add(buildChildTree(treeNode));
+            }
+        }
+        // for寰幆缁撴潫锛屽嵆鑺傜偣涓嬫病鏈変换浣曡妭鐐癸紝鏍戝舰鏋勫缓缁撴潫锛岃缃爲缁撴灉
+        pNode.put("childTree",childTree);
+        return pNode;
+    }
+
+
+
+
+}
diff --git a/server/src/main/java/com/doumee/service/business/CategoryService.java b/server/src/main/java/com/doumee/service/business/CategoryService.java
index 69d9486..22510bf 100644
--- a/server/src/main/java/com/doumee/service/business/CategoryService.java
+++ b/server/src/main/java/com/doumee/service/business/CategoryService.java
@@ -115,4 +115,6 @@
 
     String importDcaBatch(MultipartFile file);
     String initRedis();
+
+    void dealjson();
 }
diff --git a/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
index 85abc89..4269564 100644
--- a/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
+++ b/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -1,5 +1,7 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.doumee.core.annotation.excel.ExcelImporter;
 import com.doumee.core.constants.Constants;
 import com.doumee.core.constants.ResponseStatus;
@@ -13,6 +15,7 @@
 import com.doumee.dao.business.model.Company;
 import com.doumee.dao.business.vo.CategoryDcaProblemDto;
 import com.doumee.dao.business.vo.CompanyTree;
+import com.doumee.dao.web.vo.CategoryMapTree;
 import com.doumee.dao.web.vo.CategoryVO;
 import com.doumee.dao.web.vo.CategoryVOTree;
 import com.doumee.dao.business.vo.CategoryTree;
@@ -36,11 +39,11 @@
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -744,4 +747,130 @@
         }
     }
 
+
+
+    @Override
+    public void dealjson(){
+        String json = "";
+        BufferedReader reader = null;
+        try {
+            reader = new BufferedReader(new FileReader("d://file.txt"));
+            String line;
+            while ((line = reader.readLine()) != null) {
+                json = json + line;
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (reader != null){
+                    reader.close();
+                };
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        JSONObject jsonObject = JSONObject.parseObject(json);
+        JSONArray jsonArray = jsonObject.getJSONArray("data");
+
+        List<Map<String,Object>> mapList = new ArrayList<>();
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsons = jsonArray.getJSONObject(i);
+            Map<String,Object> map = new HashMap<>();
+            map.put("id",jsons.getString("id"));
+            map.put("level",jsons.getInteger("level"));
+            map.put("name",jsons.getString("name"));
+            map.put("parentId",jsons.getString("parentId"));
+            mapList.add(map);
+        }
+        CategoryMapTree categoryMapTree = new CategoryMapTree(mapList);
+        mapList = categoryMapTree.buildTree();
+
+        for (Map<String,Object> map:mapList) {
+            Category category = new Category();
+            category.setCreateDate(new Date());
+            category.setIsdeleted(Constants.ZERO);
+            category.setStatus(Constants.ZERO);
+            category.setType(Constants.SIX);
+            category.setName(map.get("name").toString());
+            category.setNamePath(map.get("name").toString());
+            categoryMapper.insert(category);
+            if(Objects.nonNull(map.get("childTree"))){
+                List<Map<String,Object>> childOneMap = (List<Map<String, Object>>) map.get("childTree");
+                for (Map<String,Object> oneMap:childOneMap) {
+                    Category oneCategory = new Category();
+                    oneCategory.setCreateDate(new Date());
+                    oneCategory.setIsdeleted(Constants.ZERO);
+                    oneCategory.setStatus(Constants.ZERO);
+                    oneCategory.setType(Constants.SIX);
+                    oneCategory.setName(oneMap.get("name").toString());
+                    oneCategory.setNamePath(category.getNamePath()+"/"+oneCategory.getName());
+                    oneCategory.setParentId(category.getId());
+                    categoryMapper.insert(oneCategory);
+
+                    if(Objects.nonNull(oneMap.get("childTree"))){
+                        List<Map<String,Object>> childTwoMap = (List<Map<String, Object>>) oneMap.get("childTree");
+                        for (Map<String,Object> twoMap:childTwoMap) {
+                            Category twoCategory = new Category();
+                            twoCategory.setCreateDate(new Date());
+                            twoCategory.setIsdeleted(Constants.ZERO);
+                            twoCategory.setStatus(Constants.ZERO);
+                            twoCategory.setType(Constants.SIX);
+                            twoCategory.setName(twoMap.get("name").toString());
+                            twoCategory.setNamePath(oneCategory.getNamePath() + "/" + twoCategory.getName());
+                            twoCategory.setParentId(oneCategory.getId());
+                            categoryMapper.insert(twoCategory);
+                        }
+                    }
+                }
+
+
+
+
+
+
+            }
+
+        }
+
+
+
+
+//        for (int i = 0; i < jsonArray.size(); i++) {
+//            JSONObject  jsonObject1 = jsonArray.getJSONObject(i);
+//            if(Constants.equalsInteger(jsonObject1.getInteger("level"),Constants.ONE)){
+//                Boolean iHavaChild = false;
+//                for (int k = 0; i < jsonArray.size(); i++) {
+//                    JSONObject  jsonObject2 = jsonArray.getJSONObject(k);
+//
+//                    Boolean kHavaChild = false;
+//                    if(Constants.equalsInteger(jsonObject2.getInteger("level"),Constants.TWO)
+//                            &&jsonObject2.getString("parentId").equals(jsonObject1.getString("id"))){
+//                        iHavaChild = true;
+//
+//                        for (int g = 0; i < jsonArray.size(); i++) {
+//                            JSONObject jsonObject3 = jsonArray.getJSONObject(g);
+//                            if(Constants.equalsInteger(jsonObject3.getInteger("level"),Constants.THREE)
+//                                    &&jsonObject3.getString("parentId").equals(jsonObject2.getString("id"))) {
+//                                kHavaChild = true;
+//
+//                                System.out.println(j.getString("id")+"---"+j.getString("name").replace("\n","")+"---"+j.getInteger("level")+"---"+j.getString("parentId"));
+//                            }
+//                        }
+//
+//                    }
+//                }
+//                if(!iHavaChild){
+//
+//                }
+//            }
+//
+//
+////            System.out.println(j.getString("id")+"---"+j.getString("name").replace("\n","")+"---"+j.getInteger("level")+"---"+j.getString("parentId"));
+//        }
+
+
+
+    }
+
 }

--
Gitblit v1.9.3