k94314517
2025-06-26 7e10354b263015632ff787221f0ca3c8a18224c2
工单业务
已添加1个文件
已修改3个文件
235 ■■■■■ 文件已修改
server/src/main/java/com/doumee/api/web/WebCategoryController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/dao/web/vo/CategoryMapTree.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/business/CategoryService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
//    }
}
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){
            // åˆ¤æ–­å½“前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。
            if(Integer.valueOf(treeNode.get("level").toString())==1){
                rootNodeList.add(treeNode);
            }
        }
        return rootNodeList;
    }
    /**
     *  æ ¹æ®æ¯ä¸€ä¸ªé¡¶çº§èŠ‚ç‚¹ï¼ˆæ ¹èŠ‚ç‚¹ï¼‰è¿›è¡Œæž„å»ºæ ‘å½¢ç»“æž„
     *  @return  æž„建整棵树
     */
    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 æ•´æ£µæ ‘
     */
    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;
    }
}
server/src/main/java/com/doumee/service/business/CategoryService.java
@@ -115,4 +115,6 @@
    String importDcaBatch(MultipartFile file);
    String initRedis();
    void dealjson();
}
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"));
//        }
    }
}